Investigating the bug https://bugzilla.yoctoproject.org/show_bug.cgi?id=8140 points to a new bug in glibc that first appeared in 2.21, in particular in libpthread-2.21.so and is still present in libpthread-2.22.so. Replacing these libraries with libpthread-2.20.so or libpthread-2.19.so fixes the original bug [YOCTO#8140]. The code between the 2.20 and 2.21 has changed quite a bit, so it is not easy to point out the exact culprit, but it is somewhere in the semaphore handling code.
This patch provides a workaround for the problem. The patch only affects 32 bit native SDKs. The patch consists of allowing 64bit atomic operations for x86. It is safe for Pentium and above, and as a matter of fact it is the best fix available for these platforms in a sense that it not only fixes the problem but also results in a more efficient code. It makes the need to find the actual bug not neccessary (although, time-permitting I will try to determine the exact root cause of the bug) There is a question of why other 32 bit images do not exhibit this bug. I don't know. It may be related to the way python multiprocessing module handles semaphores/locking/queues. Any feedback welcome. Juro Bystricky (1): glibc: Allow 64 bit atomics for x86 .../glibc/glibc/use_64bit_atomics.patch | 24 ++++++++++++++++++++++ meta/recipes-core/glibc/glibc_2.22.bb | 1 + 2 files changed, 25 insertions(+) create mode 100644 meta/recipes-core/glibc/glibc/use_64bit_atomics.patch -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core