I wanted to write down some thoughts on this which I have all the
pieces handy.

We saw a nightly layer check fail for meta-openembedded:

https://autobuilder.yoctoproject.org/typhoon/#/builders/121/builds/1798/steps/21/logs/stdio

INFO: ======================================================================
INFO: ERROR: test_show_environment (common.CommonCheckLayer)
INFO: ----------------------------------------------------------------------
INFO: Traceback (most recent call last):
  File 
"/home/pokybuild/yocto-worker/check-layer-nightly/build/scripts/lib/checklayer/cases/common.py",
 line 48, in test_show_environment
    check_command('Layer %s failed to show environment.' % 
self.tc.layer['name'],
  File 
"/home/pokybuild/yocto-worker/check-layer-nightly/build/scripts/lib/checklayer/__init__.py",
 line 287, in check_command
    raise RuntimeError(msg)
RuntimeError: Layer meta-gnome failed to show environment.
Command: bitbake -e
Output:
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted (core dumped)

which unsurprisingly is on ubuntn 20.04. We've also seen issues like
this on Debian 11.

I noticed:

https://stackoverflow.com/questions/64797838/libgcc-s-so-1-must-be-installed-for-pthread-cancel-to-work

and:

https://bugs.ams1.psf.io/issue42888

which led me to try:
ubuntu2004-ty-1:~$ wget https://bugs.ams1.psf.io/file50112/pthread_cancel_bug.py
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ echo $?
0
rpurdie@ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted (core dumped)
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted (core dumped)
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted (core dumped)

(1 in 4 success)

Then adding to the script:
import ctypes
libgcc_s = ctypes.CDLL('libgcc_s.so.1')

ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 pthread_cancel_bug.py 
ubuntu2004-ty-1:~$ python3 --version
Python 3.8.10

I also tried this on debian 11:

debian11-ty-1:~$ python3 pthread_cancel_bug.py 
libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted

debian11-ty-1:~$ python3 --version
Python 3.9.2

where the above workaround using ctypes also seems to work.

I'm therefore tempted for python 3.8/3.9 to preload libgcc_s as a
workaround for this...

Cheers,

Richard


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#192935): 
https://lists.openembedded.org/g/openembedded-core/message/192935
Mute This Topic: https://lists.openembedded.org/mt/103383243/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to