https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89255

--- Comment #5 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot 
Uni-Bielefeld.DE> ---
> --- Comment #4 from Iain Buclaw <ibuclaw at gdcproject dot org> ---
> (In reply to r...@cebitec.uni-bielefeld.de from comment #3)
>> 
>> * On Linux/x86_64, I see a few failures on i686:
>> WARNING: ../src/std/net/curl.d -fversion=Shared -shared-libphobos execution
>> test program timed out.
>> FAIL: ../src/std/net/curl.d -fversion=Shared -shared-libphobos execution test
>> WARNING: ../src/std/parallelism.d -fversion=Shared -shared-libphobos
>> execution test program timed out.
>> FAIL: ../src/std/parallelism.d -fversion=Shared -shared-libphobos execution
>> test
>> 
>> Those are PR d/89254, where the first had been fixed already in the old
>> setup.  The std.parallelism one may be related to the fact that I'm
>> running the bootstrap on an 8-socket system with 10 cores each and
>> hyperthreading, i.e. 160 cores.
>> 
>> Those two are especially unfortunate since they hang indefinitely until
>> I manually kill them, thus always require manual intervention.
>> 
>
> Are they not killed after the timeout?  I think it's 600 seconds by default.

Unfortunately not: they continue until I kill them manually.  This is
with expect 5.45.4 bundled with Fedora 29 and self-built DejaGnu 1.6.1.

>> * On Solaris 11/x86, results are not too bad:
>> 
>>              === libphobos tests ===
>> 
>> 
>> Running target unix
>> FAIL: ../libdruntime/core/sync/mutex.d -fversion=Shared -shared-libphobos
>> execution test
>> 
>> This one existed before:
>> 
>> core.exception.AssertError@/vol/gcc/src/hg/trunk/local/libphobos/testsuite/..
>> /libdruntime/core/sync/mutex.d(381): unittest failure
>> 
>
> ---
> // Verify that the underlying implementation has been destroyed
> // by checking that locking is not possible. This assumes
> // that the underlying implementation is well behaved
> // and makes the object non-lockable upon destruction.
> // The Bionic and Musl C runtimes and DragonFly don't appear to do so, so skip
> this test.
> version (CRuntime_Bionic) {} else
> version (CRuntime_Musl) {} else
> version (DragonFlyBSD) {} else
> assert(!mtx.tryLock_nothrow());
> ---
>
> This is starting to look silly, but adding version (Solaris) to the growing
> list may be required.

Ok, I'll check, thanks.

>> FAIL: ../libdruntime/core/thread.d -fversion=Shared -shared-libphobos (test
>> for excess errors)
>> 
>> Excess errors:
>> warning: Text relocation remains                referenced
>>     against symbol                  offset      in file
>> fiber_switchContext                 0x4505      /var/tmp//ccYMWL0c.o
>> fiber_switchContext                 0x4b98      /var/tmp//ccYMWL0c.o
>> 
>> This code should be compiled with -fpic/-fPIC to avoid this.
>> 
>
> threadasm.S is already be compiled with -fPIC for the pic_object.  But not I
> see for the non_pic_object unlike all *.d sources.  But it doesn't look like
> it's the static library test that's failing here.

Right: if I manually repeat the compilation with -save-temps added, I
get

warning: Text relocation remains                referenced
    against symbol                  offset      in file
fiber_switchContext                 0x4505      thread.o
fiber_switchContext                 0x4b98      thread.o

Somehow ld seems to think it's creating a shared object (or PIE), but I
don't yet see why...

>> FAIL: ../src/std/base64.d -fversion=Shared -shared-libphobos (test for
>> excess errors)
>> 
>> Excess errors:
>> ld: warning: symbol
>> '_D3std8internal7cstring23__T11tempCStringTaTAyaZ11tempCStringFAyaZ3Res6__ini
>> tZ' has differing sizes:
>>         (file /var/tmp//ccN7CxXc.o value=0x18; file
>> /var/gcc/regression/trunk/11.5-gcc-gas/build/i386-pc-solaris2.11/libphobos/
>> src/.libs/libgphobos.so value=0x108);
>>         /var/tmp//ccN7CxXc.o definition taken
>> 
>> There are several more testcases affected by this issue, all involving
>> one of
>> 
>> std.internal.cstring.tempCString!(char,
>> const(char)[]).tempCString(const(char)[]).Res
>> std.internal.cstring.tempCString!(char,
>> const(char)[]).tempCString(const(char)[]).Res
>> std.internal.cstring.tempCString!(char,
>> immutable(char)[]).tempCString(immutable(char)[]).Res
>> std.internal.cstring.tempCString!(char,
>> immutable(char)[]).tempCString(immutable(char)[]).Res
>> std.internal.cstring.tempCString!(char,
>> inout(char)[]).tempCString(inout(char)[]).Res
>> std.internal.cstring.tempCString!(char,
>> inout(char)[]).tempCString(inout(char)[]).Res
>> 
>> AFAIK there's no way to disable this warning.
>> 
>
> ---
> version (unittest)
> {
>     // smaller size to trigger reallocations
>     enum buffLength = 16 / To.sizeof;
> }
> else
> {
>     // production size
>     enum buffLength = 256 / To.sizeof;
> }
>
> To[buffLength] _buff;  // the 'small string optimization'
> ---
>
> The library should not be doing that...

Indeed.  gld accepts this silently, it seems...

>> FAIL: ../src/std/datetime/systime.d -fversion=Shared -shared-libphobos
>> execution test
>> 
>> core.exception.AssertError@/vol/gcc/src/hg/trunk/local/libphobos/testsuite/..
>> /src/std/datetime/systime.d(732): Value given: -1998-Jan-01 01:59:59
>> 
>
> Timezone is incorrect?

LC_TIME is set to the empty string form some reason: weird!

>> FAIL: ../src/std/datetime/timezone.d -fversion=Shared -shared-libphobos
>> (test for excess errors)
>> 
>> Excess errors:
>> /vol/gcc/src/hg/trunk/local/libphobos/testsuite/../src/std/datetime/timezone.
>> d:299: error: static assert  "The location of the UTC timezone file on this
>> Posix platform must be set."
>> 
>
> That probably confirms it.
>
> Looking quickly at upstream, I see this patch in master that looks to be
> needing a backport.
>
> https://github.com/dlang/phobos/commit/9f8482a5ac6bfc963e7f4c4814f2982f1500e501

Looks like it, yes.

>> UNRESOLVED: ../src/std/datetime/timezone.d -fversion=Shared
>> -shared-libphobos compilation failed to produce executable
>> FAIL: ../src/std/experimental/allocator/building_blocks/stats_collector.d
>> -fversion=Shared -shared-libphobos (test for excess errors)
>> FAIL: ../src/std/experimental/logger/core.d -fversion=Shared
>> -shared-libphobos (test for excess errors)
>> FAIL: ../src/std/experimental/logger/filelogger.d -fversion=Shared
>> -shared-libphobos (test for excess errors)
>> FAIL: ../src/std/experimental/logger/filelogger.d -fversion=Shared
>> -shared-libphobos execution test
>> FAIL: ../src/std/experimental/logger/multilogger.d -fversion=Shared
>> -shared-libphobos (test for excess errors)
>> FAIL: ../src/std/file.d -fversion=Shared -shared-libphobos (test for excess
>> errors)
>> FAIL: ../src/std/file.d -fversion=Shared -shared-libphobos execution test
>> 
>> core.exception.AssertError@/vol/gcc/src/hg/trunk/local/libphobos/testsuite/..
>> /src/std/file.d(1040): unittest failure
>> 
>
> Also related to clock/timezone problems?

I'll retry tonight with LC_TIME unset and probably the patch above.

>> FAIL: ../src/std/mmfile.d -fversion=Shared -shared-libphobos (test for
>> excess errors)
>> FAIL: ../src/std/net/curl.d -fversion=Shared -shared-libphobos (test for
>> excess errors)
>> WARNING: ../src/std/net/curl.d -fversion=Shared -shared-libphobos execution
>> test program timed out.
>> FAIL: ../src/std/net/curl.d -fversion=Shared -shared-libphobos execution test
>> FAIL: ../src/std/parallelism.d -fversion=Shared -shared-libphobos (test for
>> excess errors)
>> FAIL: ../src/std/parallelism.d -fversion=Shared -shared-libphobos execution
>> test
>> 
>> core.exception.AssertError@/vol/gcc/src/hg/trunk/local/libphobos/testsuite/..
>> /src/std/parallelism.d(3955): unittest failure
>>
>
> ---
> poolInstance.priority = Thread.PRIORITY_MAX;
> assert(poolInstance.priority == Thread.PRIORITY_MAX);
>
> poolInstance.priority = Thread.PRIORITY_MIN;
> assert(poolInstance.priority == Thread.PRIORITY_MIN);
> ---
>
> The first passes, but the second doesn't?

I'll check the code in the Solaris version of
core.thread.loadPriorities: maybe something is amiss there.

>> FAIL: ../src/std/range/package.d -fversion=Shared -shared-libphobos (test
>> for excess errors)
>> FAIL: ../src/std/socket.d -fversion=Shared -shared-libphobos (test for
>> excess errors)
>> FAIL: ../src/std/stdio.d -fversion=Shared -shared-libphobos (test for excess
>> errors)
>> FAIL: ../src/std/stdio.d -fversion=Shared -shared-libphobos execution test
>> 
>> std.exception.ErrnoException@/vol/gcc/src/hg/trunk/local/libphobos/testsuite/
>> ../src/std/stdio.d(1028): Could not seek in file
>> `/tmp/deleteme.dmd.unittest.pid16148-детка.stdio.d.1037' (Invalid argument)
>> 
>
> There's no backtrace, so don't know which unittest it came from, what are the
> reasons why fseeko may return invalid argument on Solaris?  Specifically
> anything that differs from other implementations.

Off the top of my head, could be related to largefile handling (or lack
thereof).

Reply via email to