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

Re: The perl 5.10.0 headache


After talking it over with stephen and arranging perl 5.10 to be built on
real metal vs aranym, we are pleased to report that perl passes its test
suite with the exception of one test, a threading stress test which launchs multiple threads, and then tries to make sure that they close in order.

It appears its caused by the antique version of glibc we use, and the fact that we are using the old linuxthreads package vs. nptl.

The test passes even under linuxthreads, but real-time variant of
signals have to be used, i.e. they should properly queue in kernel.
I know it, because on GNU/kFreeBSD it needs 7.x kernel.

You can use attached code to perform the same test in C.
Problem would be rather missing memory barier, or non-atomic operation.
This should be fixable even with 2.5 glibc and linuxthreads.

I've tested your code on 2.6.26-rc8 and I do see the exit c message happen out of sequence quite a bit there (usually x = a+1 holds). Is that supposed to happen? exit c is after the mutex unlock so it is expected to not serialize properly if I understand the code right.

No timeout, no mismatch at the FINAL message though. Fairly old gcc (3.3.5-3) and libc (2.3.2.ds1-22) on that system - it's my kernel hacking
disk only. The system is otherwise idle.


Reply to: