[dmd-internals] [D-Programming-Language/dmd] 29eb97: more 64 bit ABI for structs

Brad Roberts braddr at puremagic.com
Wed May 9 22:35:56 PDT 2012


The 2 of the 3 linux auto-testers seem to hang occasionally in the druntime conditional and semaphore tests as of one of
the changes today.

box 1: hangs occasionally
  8 cores
  libc 2.12
  gcc 4.4.5
  kernel 2.6.35.44-997.44.amzn1

box 2: hangs occasionally
  2 cores
  libc 2.12.2
  gcc 4.4.4
  kernel 2.6.35-28-generic

box 3: passes, or at least I haven't seen it hang yet
  4 cores
  libc 2.13
  gcc 4.6.1
  kernel 3.0.0-14-generic

The stack trace from box 1 above's hang in condition tests:
(gdb) bt
#0  0x00007f61e9bd303d in pthread_join () from /lib64/libpthread.so.0
#1  0x00000000004187af in core.thread.Thread.join() ()
#2  0x0000000000000001 in ?? ()
#3  0x00007fff4a309e00 in ?? ()
#4  0x00000000004173a7 in core.sync.condition.testWaitTimeout() ()
#5  0x0000000000000001 in ?? ()
#6  0x000000000000001a in ?? ()
#7  0x0000000000417544 in ?? ()
#8  0x0000000000634d48 in _TMP34 ()
#9  0x00007f61ea104d00 in ?? ()
#10 0x00007f61ea104a40 in ?? ()
#11 0x0000000000000000 in ?? ()

and semaphore:
(gdb) bt
#0  0x00007fc1f02df03d in pthread_join () from /lib64/libpthread.so.0
#1  0x00000000004180a3 in core.thread.Thread.join() ()
#2  0x0000000000000001 in ?? ()
#3  0x00007fff332f4280 in ?? ()
#4  0x0000000000416c5f in core.sync.semaphore.testWaitTimeout() ()
#5  0x0000000000000001 in ?? ()
#6  0x000000000000001a in ?? ()
#7  0x0000000000416e38 in ?? ()
#8  0x0000000000634158 in _TMP25 ()
#9  0x0000000000000000 in ?? ()



On 5/9/2012 8:20 PM, Walter Bright wrote:
> Thank you. This gives me a good place to start.
> 
> I also plan on inserting all these failures into the test suite, so it can be debugged without having to isolate it down
> again.
> 
> On 5/9/2012 8:06 PM, Jonathan M Davis wrote:
>> druntime is also seeing a failure in core.time, which I can reproduce with this: struct S { this(long length) {
>> this.length = length; } long length; } const(S) copy(const S s) { return s; } void main() { S t = S(42); const S u =
>> t; assert(t == u); assert(copy(t) == u); assert(t == copy(u)); } If I make copy's parameter mutable, it passes. If I
>> change the return type to mutable, it still fails. So, it seems to be something related to copy's parameter being
>> const. However, the problem also goes away if S's constructor is removed, which doesn't appear to have anything to do
>> with const. I have no idea if this relates to the problem in std.datetime or not, but it _is_ a problem only on
>> 64-bit, so it might be related. - Jonathan M Davis _______________________________________________ dmd-internals
>> mailing list dmd-internals at puremagic.com http://lists.puremagic.com/mailman/listinfo/dmd-internals 
> _______________________________________________
> dmd-internals mailing list
> dmd-internals at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-internals



More information about the dmd-internals mailing list