[D-runtime] [D-Programming-Language/druntime] 1ea100: this should fix the remaining test suite breaks

Brad Roberts braddr at puremagic.com
Sat Apr 2 00:08:30 PDT 2011


This is interesting.  It looks like a problem with opt + tls + eh issue.  if I make result1513 __gshared, the bug goes
away.  If I build without -O, the bug doesn't show up.

Walter, think you can help with this one?

--- more details ---

Adding some printfs after each change to the result1513 variable and just before the last assert:

../src/dmd -m32 -Irunnable   -odtest_results/runnable -oftest_results/runnable/eh_0 runnable/eh.d
test_results/runnable/eh_0
start
1: result1513 = 1
2: result1513 = 5
3: result1513 = 7
4: result1513 = 7

../src/dmd -m32 -Irunnable  -O -odtest_results/runnable -oftest_results/runnable/eh_1 runnable/eh.d
test_results/runnable/eh_1
start
1: result1513 = 1
2: result1513 = 5
3: result1513 = 7
4: result1513 = -1077277272

../src/dmd -m32 -Irunnable  -fPIC -odtest_results/runnable -oftest_results/runnable/eh_2 runnable/eh.d
test_results/runnable/eh_2
start
1: result1513 = 1
2: result1513 = 5
3: result1513 = 7
4: result1513 = 7

../src/dmd -m32 -Irunnable  -O -fPIC -odtest_results/runnable -oftest_results/runnable/eh_3 runnable/eh.d
test_results/runnable/eh_3
start
1: result1513 = 1
2: result1513 = 5
3: result1513 = 7
4: result1513 = 134593663

void bug1513()
{
    result1513 = 0;
    //printf("0: result1513 = %d\n", result1513);
    try
    {
        bug1513c();
    }
    catch(Exception e)
    {
        printf("4: result1513 = %d\n", result1513);
        assert(result1513 == 7);
        assert(e.msg == "a");
        assert(e.next.msg == "b");
        assert(e.next.next.msg == "c");
    }
}

If I uncomment the printf above, the value at #4 is correct.

On 4/1/2011 11:50 PM, Brad Roberts wrote:
> Did you notice that it's the test with -O that's failing?  The non -O build worked just fine.
> 
> I haven't looked any deeper yet.
> 
> On 3/31/2011 2:03 PM, Sean Kelly wrote:
>> I've tried to reproduce this failure in my Linux VM and can't.  Once I updated everything the eh.d tests completed without a hitch.
>>
>> On Mar 30, 2011, at 10:21 PM, Sean Kelly wrote:
>>
>>> Even odder, the failure line (eh.d:416) indicates that not all of the finally blocks were run, which is something my changes shouldn't have affected.
>>>
>>> On Mar 30, 2011, at 2:13 PM, Brad Roberts wrote:
>>>
>>>> Odd.. seems to have fixed osx but not linux or freebsd.
>>>>
>>>> On Wed, 30 Mar 2011, noreply at github.com wrote:
>>>>
>>>>> Branch: refs/heads/master
>>>>> Home:   https://github.com/D-Programming-Language/druntime
>>>>>
>>>>> Commit: 1ea100c1cea34202ccb70609635f3124a5a5555a
>>>>>   https://github.com/D-Programming-Language/druntime/commit/1ea100c1cea34202ccb70609635f3124a5a5555a
>>>>> Author: Sean Kelly <sean at invisibleduck.org>
>>>>> Date:   2011-03-30 (Wed, 30 Mar 2011)
>>>>>
>>>>> Changed paths:
>>>>> M src/rt/deh2.d
>>>>>
>>>>> Log Message:
>>>>> -----------
>>>>> this should fix the remaining test suite breaks
>>>>>



More information about the D-runtime mailing list