Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
March 24, 2006 [Bug 72] New: valgrind: use of unitialized values in the gcx module | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/bugzilla/show_bug.cgi?id=72 Summary: valgrind: use of unitialized values in the gcx module Product: D Version: 0.150 Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: thomas-dloop@kuehne.cn Context: DStress' next torture step will include running new compiler versions, generated programs and old compiler version with changed/new test cases under valgrind. The aim is to locate usage of uninitialized values and potential GC issues. See also: dkdk2l$76$1@digitaldaemon.com: Tiago Gasiba's "memory leakage in D" djtk1c$22gs$1@digitaldaemon.com: Tiago Gasiba's "Garbage Collector Bug?" Potentially related: dv416n$2s5q$1@digitaldaemon.com: Johan Gröngvist's "A program leaking memory." The snipplets below are missing line numbers due to Phobos compilation settings and a not yet triangled "@@ parsing :(0,7) gave NULL type ((0,7) remains)" valgrind issue. Conditional jump or move depends on uninitialized value(s) at 0x80665A2: _D3gcx3Gcx8findPoolFPvZPS3gcx4Pool (in /tmp/dstress/log) by 0x80669CF: _D3gcx3Gcx4markFPvPvZv (in /tmp/dstress/log) by 0x8066BB7: _D3gcx3Gcx11fullcollectFPvZk (in /tmp/dstress/log) by 0x8066A79: _D3gcx3Gcx16fullcollectshellFZk (in /tmp/dstress/log) by 0x8065BAF: _D3gcx2GC12mallocNoSyncFkZPv (in /tmp/dstress/log) by 0x8065AF6: _D3gcx2GC6mallocFkZPv (in /tmp/dstress/log) by 0x806000D: _d_arrayappendc (in /tmp/dstress/log) Use of uninitialised value of size 4 at 0x80669E3: _D3gcx3Gcx4markFPvPvZv (in /tmp/dstress/log) by 0x8066BB7: _D3gcx3Gcx11fullcollectFPvZk (in /tmp/dstress/log) by 0x8066A79: _D3gcx3Gcx16fullcollectshellFZk (in /tmp/dstress/log) by 0x8065BAF: _D3gcx2GC12mallocNoSyncFkZPv (in /tmp/dstress/log) by 0x8065AF6: _D3gcx2GC6mallocFkZPv (in /tmp/dstress/log) by 0x806000D: _d_arrayappendc (in /tmp/dstress/log) Use of uninitialised value of size 4 at 0x8067358: _D6gcbits6GCBits4testFkZk (in /tmp/dstress/log) by 0x8066A17: _D3gcx3Gcx4markFPvPvZv (in /tmp/dstress/log) by 0x8066BB7: _D3gcx3Gcx11fullcollectFPvZk (in /tmp/dstress/log) by 0x8066A79: _D3gcx3Gcx16fullcollectshellFZk (in /tmp/dstress/log) by 0x8065BAF: _D3gcx2GC12mallocNoSyncFkZPv (in /tmp/dstress/log) by 0x8065AF6: _D3gcx2GC6mallocFkZPv (in /tmp/dstress/log) by 0x806000D: _d_arrayappendc (in /tmp/dstress/log) Use of uninitialised value of size 4 at 0x8067370: _D6gcbits6GCBits3setFkZv (in /tmp/dstress/log) by 0x8066A24: _D3gcx3Gcx4markFPvPvZv (in /tmp/dstress/log) by 0x8066BB7: _D3gcx3Gcx11fullcollectFPvZk (in /tmp/dstress/log) by 0x8066A79: _D3gcx3Gcx16fullcollectshellFZk (in /tmp/dstress/log) by 0x8065BAF: _D3gcx2GC12mallocNoSyncFkZPv (in /tmp/dstress/log) by 0x8065AF6: _D3gcx2GC6mallocFkZPv (in /tmp/dstress/log) by 0x806000D: _d_arrayappendc (in /tmp/dstress/log) Conditional jump or move depends on uninitialised value(s) at 0x8066C6A: _D3gcx3Gcx11fullcollectFPvZk (in /tmp/dstress/log) by 0x8066A79: _D3gcx3Gcx16fullcollectshellFZk (in /tmp/dstress/log) by 0x8065BAF: _D3gcx2GC12mallocNoSyncFkZPv (in /tmp/dstress/log) by 0x8065AF6: _D3gcx2GC6mallocFkZPv (in /tmp/dstress/log) by 0x806000D: _d_arrayappendc (in /tmp/dstress/log) -- |
March 25, 2006 Re: [Bug 72] New: valgrind: use of unitialized values in the gcx module | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | <d-bugmail@puremagic.com> wrote in message news:bug-72-3@http.d.puremagic.com/bugzilla/... > Use of uninitialised value of size 4 > at 0x8067370: _D6gcbits6GCBits3setFkZv (in /tmp/dstress/log) > by 0x8066A24: _D3gcx3Gcx4markFPvPvZv (in /tmp/dstress/log) > by 0x8066BB7: _D3gcx3Gcx11fullcollectFPvZk (in /tmp/dstress/log) > by 0x8066A79: _D3gcx3Gcx16fullcollectshellFZk (in /tmp/dstress/log) > by 0x8065BAF: _D3gcx2GC12mallocNoSyncFkZPv (in /tmp/dstress/log) > by 0x8065AF6: _D3gcx2GC6mallocFkZPv (in /tmp/dstress/log) > by 0x806000D: _d_arrayappendc (in /tmp/dstress/log) I don't know what to make of this. Here's the code in question: void set(uint i) in { assert(i < nbits); } body { //(cast(bit *)(data + 1))[i] = 1; data[1 + (i >> BITS_SHIFT)] |= (1 << (i & BITS_MASK)); } Where's the use of an uninitialized value? |
March 25, 2006 Re: [Bug 72] New: valgrind: use of unitialized values in the gcx module | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright Attachments: | Walter Bright schrieb am 2006-03-25:
>
><d-bugmail@puremagic.com> wrote in message
> news:bug-72-3@http.d.puremagic.com/bugzilla/...
>> Use of uninitialised value of size 4
>> at 0x8067370: _D6gcbits6GCBits3setFkZv (in /tmp/dstress/log)
>> by 0x8066A24: _D3gcx3Gcx4markFPvPvZv (in /tmp/dstress/log)
>> by 0x8066BB7: _D3gcx3Gcx11fullcollectFPvZk (in /tmp/dstress/log)
>> by 0x8066A79: _D3gcx3Gcx16fullcollectshellFZk (in /tmp/dstress/log)
>> by 0x8065BAF: _D3gcx2GC12mallocNoSyncFkZPv (in /tmp/dstress/log)
>> by 0x8065AF6: _D3gcx2GC6mallocFkZPv (in /tmp/dstress/log)
>> by 0x806000D: _d_arrayappendc (in /tmp/dstress/log)
>
> I don't know what to make of this. Here's the code in question:
>
> void set(uint i)
> in
> {
> assert(i < nbits);
> }
> body
> {
> //(cast(bit *)(data + 1))[i] = 1;
> data[1 + (i >> BITS_SHIFT)] |= (1 << (i & BITS_MASK));
> }
>
> Where's the use of an uninitialized value?
Seems to be a side effect of the "-release" flag.
compiling phobos with no flags:
=> no uninitialized value messages
compiling phobos with "-inline":
=> no uninitialized value messages
compiling phobos with "-O":
=> no unitialized value messages
compiling phobos with "-release":
=> "_D6gcbits6GCBits3setFkZv" message twice
compiling phobos with "-inline -O":
=> no unitialized value messages
compiling phobos with "-inline -release":
=> "_D6gcbits6GCBits3setFkZv" message twice
compiling phobos with "-O -release":
=> "_D6gcbits6GCBits3setFkZv" message twice
compiling phobos with "-inline -O -release":
=> "_D6gcbits6GCBits3setFkZv" message twice
Thomas
|
March 25, 2006 Re: [Bug 72] New: valgrind: use of unitialized values in the gcx module | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Kuehne | Which file(s) in phobos triggers this? I'll create a minimalized test case. |
March 31, 2006 Re: [Bug 72] New: valgrind: use of unitialized values in the gcx module | ||||
---|---|---|---|---|
| ||||
Posted in reply to Brad Roberts Attachments: | Brad Roberts schrieb am 2006-03-25: > Which file(s) in phobos triggers this? I'll create a minimalized test case. The code below triggers the _D6gcbits6GCBits3setFkZv issue. Phobos compiled without "-release": 2 x Conditional jump or move depends on uninitialised value 2 x Use of uninitialised value of size 4 Phobos compiled with "-release": 2 x Use of uninitialised value of size 4 > int main(){ > char[] dummy; > dummy = "abc".dup; > for(int a=0; a < 120; a++){ > char[] tmp = new char[a % 80]; > for(int b=0; b < a % 10; b++){ > dummy = dummy[0 .. $ % 33] ~ tmp[0 .. $ % 11] ~ dummy[ $ % 33 .. $]; > } > } > return dummy.length / 2000002; > } Setting: DMD-0.150 / Linux / Valgrind-3.1.1 Thomas |
Copyright © 1999-2021 by the D Language Foundation