[Issue 23978] [REG 2.103.0] ICE: Segmentation fault in dmd.root.aav.dmd_aaGetRvalue at src/dmd/root/aav.d:127

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Jun 8 13:30:11 UTC 2023


https://issues.dlang.org/show_bug.cgi?id=23978

--- Comment #9 from Iain Buclaw <ibuclaw at gdcproject.org> ---
The printf dumps really don't give any hint as to what went wrong, but there is
at least a common pattern I see for each time it crashes.

---------------------

Mem.xrealloc((nil), 624) = 0x7f3686b63000  <-- !!! This address ends up as aa.b
...
...
Mem.xrealloc(0x7f3686b63000, 832) = 0x7f3686b8d400 <-- !!! marked free
...
...
----------------------------------------------------------
from: dmd_aaRehash++
this = 0x7f3686b95a20
nodes = 9
b_length = 4
[
        b[0] 0x7f3686b95a38 = 0x7f3686b95a58 {
                next = 0x7f3686b98c20
                key = 0x7f3687f32fc0
                value = 0x7f3687f2c500
        }
        b[1] 0x7f3686b95a40 = 0x7f3686b98bc0 {
                next = (nil)
                key = 0x7f3687f36060
                value = 0x7f3687f37000
        }
        b[2] 0x7f3686b95a48 = 0x7f3686b98b80 {
                next = 0x7f3686b98be0
                key = 0x7f3687f32fe0
                value = 0x7f3687f2c600
        }
        b[3] 0x7f3686b95a50 = 0x7f3686b98ba0 {
                next = 0x7f3686b98c00
                key = 0x7f3687f36000
                value = 0x7f3687f2c700
        }
]
Mem.xmalloc(768) = 0x7f3686b63000 <-- !!! rehash wants memory, reuse old
address
----------------------------------------------------------
from: dmd_aaRehash--
this = 0x7f3686b95a20
nodes = 9
b_length = 32
[
        b[0] 0x7f3686b63000 = (nil)
        b[1] 0x7f3686b63008 = (nil)
        b[2] 0x7f3686b63010 = (nil)
        b[3] 0x7f3686b63018 = (nil)
        b[4] 0x7f3686b63020 = (nil)
        b[5] 0x7f3686b63028 = (nil)
        b[6] 0x7f3686b63030 = (nil)
        b[7] 0x7f3686b63038 = (nil)  <-- !!! This index is null
        b[8] 0x7f3686b63040 = (nil)
        b[9] 0x7f3686b63048 = (nil)
        b[10] 0x7f3686b63050 = (nil)
        b[11] 0x7f3686b63058 = (nil)
        b[12] 0x7f3686b63060 = (nil)
        b[13] 0x7f3686b63068 = (nil)
        b[14] 0x7f3686b63070 = (nil)
        b[15] 0x7f3686b63078 = (nil)
        b[16] 0x7f3686b63080 = (nil)
        b[17] 0x7f3686b63088 = (nil)
        b[18] 0x7f3686b63090 = (nil)
        b[19] 0x7f3686b63098 = 0x7f3686b98ba0 {
                next = (nil)
                key = 0x7f3687f36000
                value = 0x7f3687f2c700
        }
        b[20] 0x7f3686b630a0 = 0x7f3686b95a58 {
                next = (nil)
                key = 0x7f3687f32fc0
                value = 0x7f3687f2c500
        }
        b[21] 0x7f3686b630a8 = 0x7f3686b98bc0 {
                next = (nil)
                key = 0x7f3687f36060
                value = 0x7f3687f37000
        }
        b[22] 0x7f3686b630b0 = 0x7f3686b98b80 {
                next = (nil)
                key = 0x7f3687f32fe0
                value = 0x7f3687f2c600
        }
        b[23] 0x7f3686b630b8 = 0x7f3686b98c00 {
                next = (nil)
                key = 0x7f3687f36040
                value = 0x7f3687f37330
        }
        b[24] 0x7f3686b630c0 = 0x7f3686b98c20 {
                next = (nil)
                key = 0x7f3687f360a0
                value = 0x7f3687f2c800
        }
        b[25] 0x7f3686b630c8 = (nil)
        b[26] 0x7f3686b630d0 = 0x7f3686b98be0 {
                next = (nil)
                key = 0x7f3687f36080
                value = 0x7f3687f34200
        }
        b[27] 0x7f3686b630d8 = (nil)
        b[28] 0x7f3686b630e0 = 0x7f3686b98c60 {
                next = (nil)
                key = 0x7f3687f360e0
                value = (nil)
        }
        b[29] 0x7f3686b630e8 = (nil)
        b[30] 0x7f3686b630f0 = 0x7f3686b98c40 {
                next = (nil)
                key = 0x7f3687f360c0
                value = 0x7f3687f37660
        }
        b[31] 0x7f3686b630f8 = (nil)
]
...
...
Mem.xmalloc(80) = 0x7f3686ba2b40
----------------------------------------------------------
from: dmd_aaGet
this = 0x7f3686ba2b40
nodes = 0
----------------------------------------------------------
from: dmd_aaGet==
this = 0x7f3686ba2b40
nodes = 1
b_length = 4
[
        b[0] 0x7f3686ba2b58 = (nil)
        b[1] 0x7f3686ba2b60 = 0x7f3686ba2b78 {
                next = (nil)
                key = 0x7f3687f285e0
                value = (nil)
        }
        b[2] 0x7f3686ba2b68 = (nil)
        b[3] 0x7f3686ba2b70 = (nil)
]
----------------------------------------------------------
from: dmd_aaGet
this = 0x7f3686ba2b40
nodes = 1
b_length = 4
[
        b[0] 0x7f3686ba2b58 = (nil)
        b[1] 0x7f3686ba2b60 = 0x7f3686ba2b78 {
                next = (nil)
                key = 0x7f3687f285e0
                value = 0x7f3686b9fb00  <-- !!! This is what corrupts aa.b[7]
        }
        b[2] 0x7f3686ba2b68 = (nil)
        b[3] 0x7f3686ba2b70 = (nil)
]
...
...
----------------------------------------------------------
from: dmd_aaGetRvalue
this = 0x7f3686ba2b40  <-- !!! Last access of this AA
nodes = 2
b_length = 4
[
        b[0] 0x7f3686ba2b58 = (nil)
        b[1] 0x7f3686ba2b60 = 0x7f3686ba2b78 {
                next = (nil)
                key = 0x7f3687f285e0
                value = 0x7f3686b9fb00
        }
        b[2] 0x7f3686ba2b68 = (nil)
        b[3] 0x7f3686ba2b70 = 0x7f3686b9a220 {
                next = (nil)
                key = 0x7f3687f2ade0
                value = 0x7f3686b9fc00
        }
]
----------------------------------------------------------
from: dmd_aaGetRvalue
this = 0x7f3686b95a20
nodes = 9
b_length = 32
[
        b[0] 0x7f3686b63000 = (nil)
        b[1] 0x7f3686b63008 = (nil)
        b[2] 0x7f3686b63010 = (nil)
        b[3] 0x7f3686b63018 = (nil)
        b[4] 0x7f3686b63020 = (nil)
        b[5] 0x7f3686b63028 = (nil)
        b[6] 0x7f3686b63030 = (nil)
        b[7] 0x7f3686b63038 = (nil)  <-- !!! Still null
        b[8] 0x7f3686b63040 = (nil)
        b[9] 0x7f3686b63048 = (nil)
        b[10] 0x7f3686b63050 = (nil)
        b[11] 0x7f3686b63058 = (nil)
        b[12] 0x7f3686b63060 = (nil)
        b[13] 0x7f3686b63068 = (nil)
        b[14] 0x7f3686b63070 = (nil)
        b[15] 0x7f3686b63078 = (nil)
        b[16] 0x7f3686b63080 = (nil)
        b[17] 0x7f3686b63088 = (nil)
        b[18] 0x7f3686b63090 = (nil)
        b[19] 0x7f3686b63098 = 0x7f3686b98ba0 {
                next = (nil)
                key = 0x7f3687f36000
                value = 0x7f3687f2c700
        }
        b[20] 0x7f3686b630a0 = 0x7f3686b95a58 {
                next = (nil)
                key = 0x7f3687f32fc0
                value = 0x7f3687f2c500
        }
        b[21] 0x7f3686b630a8 = 0x7f3686b98bc0 {
                next = (nil)
                key = 0x7f3687f36060
                value = 0x7f3687f37000
        }
        b[22] 0x7f3686b630b0 = 0x7f3686b98b80 {
                next = (nil)
                key = 0x7f3687f32fe0
                value = 0x7f3687f2c600
        }
        b[23] 0x7f3686b630b8 = 0x7f3686b98c00 {
                next = (nil)
                key = 0x7f3687f36040
                value = 0x7f3687f37330
        }
        b[24] 0x7f3686b630c0 = 0x7f3686b98c20 {
                next = (nil)
                key = 0x7f3687f360a0
                value = 0x7f3687f2c800
        }
        b[25] 0x7f3686b630c8 = (nil)
        b[26] 0x7f3686b630d0 = 0x7f3686b98be0 {
                next = (nil)
                key = 0x7f3687f36080
                value = 0x7f3687f34200
        }
        b[27] 0x7f3686b630d8 = (nil)
        b[28] 0x7f3686b630e0 = 0x7f3686b98c60 {
                next = (nil)
                key = 0x7f3687f360e0
                value = 0x7f3687f37990
        }
        b[29] 0x7f3686b630e8 = (nil)
        b[30] 0x7f3686b630f0 = 0x7f3686b98c40 {
                next = (nil)
                key = 0x7f3687f360c0
                value = 0x7f3687f37660
        }
        b[31] 0x7f3686b630f8 = (nil)
]
...
...
----------------------------------------------------------
from: dmd_aaGetRvalue
this = 0x7f3686b95a20
nodes = 9
b_length = 32
[
        b[0] 0x7f3686b63000 = (nil)
        b[1] 0x7f3686b63008 = (nil)
        b[2] 0x7f3686b63010 = (nil)
        b[3] 0x7f3686b63018 = (nil)
        b[4] 0x7f3686b63020 = (nil)
        b[5] 0x7f3686b63028 = (nil)
        b[6] 0x7f3686b63030 = (nil)
        b[7] 0x7f3686b63038 = 0x7f3686b9fb00 {  <-- !!! Now has value?!?!
                next = 0x559ae6f9b510
                key = 0x7f3687f285e0
                value = 0x7f3686b8c330
        }
        b[8] 0x7f3686b63040 = (nil)
        b[9] 0x7f3686b63048 = (nil)
        b[10] 0x7f3686b63050 = (nil)
        b[11] 0x7f3686b63058 = (nil)
        b[12] 0x7f3686b63060 = (nil)
        b[13] 0x7f3686b63068 = (nil)
        b[14] 0x7f3686b63070 = (nil)
        b[15] 0x7f3686b63078 = (nil)
        b[16] 0x7f3686b63080 = (nil)
        b[17] 0x7f3686b63088 = (nil)
        b[18] 0x7f3686b63090 = (nil)
        b[19] 0x7f3686b63098 = 0x7f3686b98ba0 {
                next = (nil)
                key = 0x7f3687f36000
                value = 0x7f3687f2c700
        }
        b[20] 0x7f3686b630a0 = 0x7f3686b95a58 {
                next = (nil)
                key = 0x7f3687f32fc0
                value = 0x7f3687f2c500
        }
        b[21] 0x7f3686b630a8 = 0x7f3686b98bc0 {
                next = (nil)
                key = 0x7f3687f36060
                value = 0x7f3687f37000
        }
        b[22] 0x7f3686b630b0 = 0x7f3686b98b80 {
                next = (nil)
                key = 0x7f3687f32fe0
                value = 0x7f3687f2c600
        }
        b[23] 0x7f3686b630b8 = 0x7f3686b98c00 {
                next = (nil)
                key = 0x7f3687f36040
                value = 0x7f3687f37330
        }
        b[24] 0x7f3686b630c0 = 0x7f3686b98c20 {
                next = (nil)
                key = 0x7f3687f360a0
                value = 0x7f3687f2c800
        }
        b[25] 0x7f3686b630c8 = (nil)
        b[26] 0x7f3686b630d0 = 0x7f3686b98be0 {
                next = (nil)
                key = 0x7f3687f36080
                value = 0x7f3687f34200
        }
        b[27] 0x7f3686b630d8 = (nil)
        b[28] 0x7f3686b630e0 = 0x7f3686b98c60 {
                next = (nil)
                key = 0x7f3687f360e0
                value = 0x7f3687f37990
        }
        b[29] 0x7f3686b630e8 = (nil)
        b[30] 0x7f3686b630f0 = 0x7f3686b98c40 {
                next = (nil)
                key = 0x7f3687f360c0
                value = 0x7f3687f37660
        }
        b[31] 0x7f3686b630f8 = (nil)
]
Segmentation fault (core dumped)
fail

--


More information about the Digitalmars-d-bugs mailing list