I'm on python; I am trying to shut down a function running through a ThreadPoolExecutor, but the shutdown is crashing with the error:
libgcc_s.so.1 must be installed for pthread_cancel to work
The function is submitted with:
record_future = self.executor.submit(next,primitive)
primitive
is an iterator that usually returns a value but in some cases, it needs to wait a while before returning a value (because of long calculations, etc). In these cases, when I need to shut down the running thread, I cannot wait for the iterator to finish returning, and need to shut it down immediately. I did it with:
executor.shutdown(wait=False)
However, when execution reaches this point, I get the libgcc error.
I tried 'solving' it by manually installing with:
apt-get install libgcc1:amd64
but no dice. I am not sure where exactly python is looking for this library, otherwise I would try creating a symbolic link, because the library is already installed at:
$ /sbin/ldconfig -p | grep libgcc
libgcc_s.so.1 (libc6,x32) => /usr/libx32/libgcc_s.so.1
libgcc_s.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgcc_s.so.1
libgcc_s.so.1 (libc6) => /usr/lib32/libgcc_s.so.1
I found a potential workaround in the Python mailing list to explicitly load libgcc_.so.1
via ctypes
as follows:
import ctypes
libgcc_s = ctypes.CDLL('libgcc_s.so.1')
One has to make sure that this is loaded before any threads are created and that the variable libgcc_s
lasts until all of the threads are closed (i.e. put this at the beginning of your file).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With