[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

make 3.81 + i386-pc-interix* parallelism problem, and "write error"

From: Markus Duft
Subject: make 3.81 + i386-pc-interix* parallelism problem, and "write error"
Date: Tue, 17 Mar 2009 17:56:17 +0100


I'm running make on x86 interix (SFU/SUA). All works like a charm, except
for occasional problems with multi-core machines (I'm not sure if the same
problems would occur on single cores too...).

I'm seeing two different problems, the "bader" one being a jobserver token
leak. Sometimes make exits with messages like this:

        make: INTERNAL: Exiting with 3 jobserver tokens available; should be

But much worse is the case where make simply hangs, and seems to be out of
jobserver tokens! Is this a known problem? I tried the patch from [1], but
that didn't make any difference.

Also I found a patch against 3.80, adding the jobserver_tokens global
variable, so I assume that one has been incorporated into 3.81, since this
variable already exists... (?).

I attached the output of this command and the corresponding .diff file:
        while ( cd tests && perl ./run_make_tests.pl features/parallelism
-make ../make -debug -verbose ); do echo ...; done > xx 2>&1 &

the test-1 log is seemingly another problem, which occurred while I tried to
faster provocate the error I'm reporting here by putting my 2 core AMD CPU
under heavy load. Ugh... another one :(

FYI I attached the config.log too, so you can identify potential issues
caused by assumptions which may be wrong for interix.

[1] http://savannah.gnu.org/bugs/?18124


Now for the second problem, which is far easier to work around: Again only
occasionally I'm getting "make[N]: write error". After
R[eading]T[he]F[ine]S[source] I found out that ferror(stdout) triggers this
message. Strange... seems like there was an error writing to stdout..? or
could this point to an error writing to the jobserver fds?

I worked around the problem for now by simply not exiting on this error,
since it's not too critical for me if a line in the output is missing or
something like that. Also since it's only occasionally, I can simple do make
again, If I really need all the output.

BTW I never noticed missing output when I got "write error", but output
tends to be kilometers long, so I could have overseen that :)

Any ideas regarding those two?

P.S.: I just noticed that the --enable-case-insensitive-file-system (interix
is insensitive, as it uses window's fs') is win32 only as-is, since it uses
strcmpi. Attached is a patch fixing this for interix. Maybe this fixes for
this feature for mac osx too (is there support for max osx yet?).

Thanks in advance, Cheers,
Markus Duft

Attachment: make-3.81-case-insensitive-non-win32.patch
Description: Binary data

Attachment: make-3.81-config-interix6.0.log.gz
Description: GNU Zip compressed data

Attachment: make-3.81-parallelism-test-1.tgz
Description: application/compressed

Attachment: make-3.81-parallelism-test-2.tgz
Description: application/compressed

reply via email to

[Prev in Thread] Current Thread [Next in Thread]