Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Win64 failing unittests #758

Closed
Trass3r opened this issue Oct 22, 2014 · 9 comments
Closed

Win64 failing unittests #758

Trass3r opened this issue Oct 22, 2014 · 9 comments
Labels

Comments

@Trass3r
Copy link
Contributor

Trass3r commented Oct 22, 2014

Let's collect information about the failing unittests.

@Trass3r
Copy link
Contributor Author

Trass3r commented Oct 22, 2014

@kinke
Copy link
Member

kinke commented Oct 22, 2014

Good idea. Current state for those interested:

57 failures:

core.thread (SEGFAULT)
core.time (SEGFAULT)
rt.lifetime (SEGFAULT)
std.algorithm (SEGFAULT)
std.array (SEGFAULT)
std.complex (Failed)
std.concurrency (SEGFAULT)
std.conv (SEGFAULT)
std.csv (Failed)
std.datetime (SEGFAULT)
std.getopt (SEGFAULT)
std.math (Failed)
std.numeric (Failed)
std.outbuffer (Failed)
std.parallelism (SEGFAULT)
std.path (SEGFAULT)
std.process (SEGFAULT)
std.regex (SEGFAULT)
std.socket (Failed)
std.stdio (Failed)
std.string (SEGFAULT)
std.uni (SEGFAULT)
std.uri (SEGFAULT)
std.variant (Failed)
std.xml (SEGFAULT)
std.zlib (SEGFAULT)
std.net.isemail (SEGFAULT)
std.internal.math.errorfunction (Failed)
std.internal.math.gammafunction (Failed)
core.time-debug (SEGFAULT)
rt.lifetime-debug (SEGFAULT)
std.algorithm-debug (SEGFAULT)
std.array-debug (SEGFAULT)
std.complex-debug (Failed)
std.concurrency-debug (SEGFAULT)
std.conv-debug (SEGFAULT)
std.csv-debug (Failed)
std.datetime-debug (SEGFAULT)
std.getopt-debug (SEGFAULT)
std.json-debug (Failed)
std.math-debug (Failed)
std.numeric-debug (Failed)
std.outbuffer-debug (Failed)
std.parallelism-debug (SEGFAULT)
std.path-debug (Failed)
std.process-debug (SEGFAULT)
std.regex-debug (SEGFAULT)
std.socket-debug (Failed)
std.stdio-debug (Failed)
std.uni-debug (SEGFAULT)
std.uri-debug (SEGFAULT)
std.variant-debug (SEGFAULT)
std.xml-debug (SEGFAULT)
std.zlib-debug (SEGFAULT)
std.net.isemail-debug (SEGFAULT)
std.internal.math.errorfunction-debug (Failed)
std.internal.math.gammafunction-debug (Failed)

Kai's latest EH fixes have reduced the number further.
That vararg bug looks very promising...

@Trass3r
Copy link
Contributor Author

Trass3r commented Oct 24, 2014

Added #761.

@kinke
Copy link
Member

kinke commented Oct 25, 2014

The number is now down to 41: ldc-developers/druntime#14 (comment)

@kinke
Copy link
Member

kinke commented Feb 27, 2015

Update:
39 failures with LLVM 3.7 (d89ac8f158976eaa9f9bcfba88f8a679771704f8), LDC head (with /LARGEADDRESSAWARE:NO adaptations) and VS 2013/Win8 x64:

core.thread
std.algorithm
std.complex
std.conv
std.csv
std.datetime
std.math
std.numeric
std.parallelism
std.path
std.process
std.regex
std.stream
std.uni
std.uri
std.zlib
std.net.isemail
std.internal.math.errorfunction
std.internal.math.gammafunction
std.algorithm-debug
std.complex-debug
std.conv-debug
std.csv-debug
std.datetime-debug
std.json-debug
std.math-debug
std.numeric-debug
std.parallelism-debug
std.path-debug
std.process-debug
std.regex-debug
std.socket-debug
std.stream-debug
std.uni-debug
std.uri-debug
std.zlib-debug
std.net.isemail-debug
std.internal.math.errorfunction-debug
std.internal.math.gammafunction-debug

@kinke
Copy link
Member

kinke commented Feb 27, 2015

I'll go ahead with VS 2015 CTP 6 ;) - not too bad, 58 failures:

         19 - core.thread (SEGFAULT)
        147 - std.algorithm (Failed)
        148 - std.array (Failed)
        151 - std.bigint (Failed)
        156 - std.conv (Failed)
        157 - std.cstream (Failed)
        158 - std.csv (Failed)
        159 - std.datetime (Failed)
        161 - std.encoding (Failed)
        164 - std.format (Failed)
        168 - std.math (Failed)
        174 - std.parallelism (SEGFAULT)
        175 - std.path (Failed)
        176 - std.process (Failed)
        179 - std.regex (Failed)
        181 - std.socket (Failed)
        184 - std.stdio (Failed)
        186 - std.stream (SEGFAULT)
        187 - std.string (Failed)
        190 - std.traits (Failed)
        194 - std.uni (Failed)
        195 - std.uri (Failed)
        201 - std.zlib (Failed)
        209 - std.digest.crc (Failed)
        211 - std.digest.md (Failed)
        212 - std.digest.ripemd (Failed)
        213 - std.digest.sha (Failed)
        215 - std.net.isemail (SEGFAULT)
        221 - std.internal.math.gammafunction (Failed)
        390 - std.algorithm-debug (Failed)
        391 - std.array-debug (Failed)
        394 - std.bigint-debug (Failed)
        399 - std.conv-debug (Failed)
        400 - std.cstream-debug (Failed)
        401 - std.csv-debug (Failed)
        402 - std.datetime-debug (Failed)
        404 - std.encoding-debug (Failed)
        407 - std.format-debug (Failed)
        410 - std.json-debug (Failed)
        411 - std.math-debug (Failed)
        417 - std.parallelism-debug (SEGFAULT)
        418 - std.path-debug (Failed)
        419 - std.process-debug (Failed)
        422 - std.regex-debug (Failed)
        424 - std.socket-debug (Failed)
        427 - std.stdio-debug (Failed)
        429 - std.stream-debug (SEGFAULT)
        430 - std.string-debug (Failed)
        433 - std.traits-debug (Failed)
        437 - std.uni-debug (Failed)
        438 - std.uri-debug (Failed)
        444 - std.zlib-debug (Failed)
        452 - std.digest.crc-debug (Failed)
        454 - std.digest.md-debug (Failed)
        455 - std.digest.ripemd-debug (Failed)
        456 - std.digest.sha-debug (Failed)
        458 - std.net.isemail-debug (SEGFAULT)
        464 - std.internal.math.gammafunction-debug (Failed)

with ldc-developers/phobos#6 and ldc-developers/druntime#17 (don't forget to uncomment version = LDC_MSVCRT14; in the druntime files).

A new common issue seems to have arised (assertion in CRT) which probably accounts for most differences compared to MSVCRT 12.
MSVCRT 14 fixes highly problematic #761. We can't fix that easily otherwise.

/edit: I think I've fixed that issue, feof() didn't work as stdio.h has changed more than anticipated. I've silently updated the druntime PR and am currently rebuilding the tests.
/edit2: Nope that didn't fix the main issue.

@kinke
Copy link
Member

kinke commented Mar 3, 2015

Now down to 39 failures with #856 and MSVCRT 14 by simply disabling a printf() call in test_runner.d after a successful unit-test run, the printf() call inside the try-block. Apparently there's some serious corruption going on as otherwise I get a MSVCRT assertion failure

(fh >= 0 && (unsigned)fh < (unsigned)_nhandle)

in isatty() called by printf() which probably checks that stdout points to a valid handle.
By disabling the try-catch-block altogether and instead simply invoking fp(), a bunch of randomly selected failing Phobos-debug tests according to VS debugger all fail in ldc.eh2._d_eh_personality:364 due to an access violation:

if (_d_isbaseof(excobj.classinfo, catch_ci))

with excobj being null. The call stack is full of _d_eh_personality() frames.
I guess exception handling is still the #1 blocker for Win64.

Failing tests:

core.thread (SEGFAULT)
std.algorithm (SEGFAULT)
std.csv (Failed)
std.datetime (SEGFAULT)
std.math (Failed)
std.parallelism (SEGFAULT)
std.path (SEGFAULT)
std.process (SEGFAULT)
std.regex (SEGFAULT)
std.stream (SEGFAULT)
std.uni (SEGFAULT)
std.uri (SEGFAULT)
std.zlib (SEGFAULT)
std.net.isemail (SEGFAULT)
std.internal.math.gammafunction (Failed)
std.algorithm-debug (SEGFAULT)
std.array-debug (SEGFAULT)
std.bigint-debug (SEGFAULT)
std.csv-debug (Failed)
std.encoding-debug (SEGFAULT)
std.json-debug (Failed)
std.math-debug (Failed)
std.parallelism-debug (SEGFAULT)
std.path-debug (SEGFAULT)
std.process-debug (SEGFAULT)
std.regex-debug (SEGFAULT)
std.socket-debug (Failed)
std.stream-debug (SEGFAULT)
std.string-debug (SEGFAULT)
std.traits-debug (SEGFAULT)
std.uni-debug (SEGFAULT)
std.uri-debug (SEGFAULT)
std.zlib-debug (SEGFAULT)
std.digest.crc-debug (SEGFAULT)
std.digest.md-debug (SEGFAULT)
std.digest.ripemd-debug (SEGFAULT)
std.digest.sha-debug (SEGFAULT)
std.net.isemail-debug (SEGFAULT)
std.internal.math.gammafunction-debug (Failed)

/edit: If I abort() right before _d_eh_personality:364 if excobj is null, all of above's SEGFAULTs except for core.thread are converted to aborts. I.e., this is crucial. printf() is not usable at that point, causing the same CRT assertion.

@kinke
Copy link
Member

kinke commented Sep 26, 2015

Only remaining failing unittest nowadays is core.thread, which fails in release in line https://github.com/ldc-developers/druntime/blob/ldc/src/core/thread.d#L5467, a Win64-specific test.

@kinke
Copy link
Member

kinke commented Mar 28, 2016

The status is still the same. #1103 points to the single remaining 'issue' incl. details, so I'm going to close this.

@kinke kinke closed this as completed Mar 28, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants