Upon making my python script multi-threaded I started seeing the following error. This is a ubuntu 10.10 running python2.6 and using the python-curl library in apt. I tried building the latest from CVS, and I am getting the same crash.
*** longjmp causes uninitialized stack frame ***: python terminated
======= Backtrace: =========
/lib/libc.so.6(__fortify_fail+0x37)[0x7f496d5c2537]
/lib/libc.so.6(+0xff4c9)[0x7f496d5c24c9]
/lib/libc.so.6(__longjmp_chk+0x33)[0x7f496d5c2433]
/usr/lib/libcurl-gnutls.so.4(+0xcca5)[0x7f496c587ca5]
/lib/libpthread.so.0(+0xfb40)[0x7f496e6d5b40]
/lib/libc.so.6(__poll+0x53)[0x7f496d59d203]
/usr/lib/libcurl-gnutls.so.4(Curl_socket_ready+0x116)[0x7f496c5b2286]
/usr/lib/libcurl-gnutls.so.4(+0x2a37c)[0x7f496c5a537c]
/usr/lib/pymodules/python2.6/pycurl.so(+0x8ddb)[0x7f496c7d6ddb]
python(PyEval_EvalFrameEx+0x52a8)[0x4a52e8]
python(PyEval_EvalCodeEx+0x911)[0x4a6bd1]
python(PyEval_EvalFrameEx+0x4d19)[0x4a4d59]
python(PyEval_EvalFrameEx+0x5a70)[0x4a5ab0]
The crash is happening here:
/usr/lib/pymodules/python2.6/pycurl.so(+0x8ddb)[0x7f496c7d6ddb]
Which is somewhere inside do_curl_perform()
I have the same issue in a multi threaded script.
I'm running an ubuntu 10.10 (x86_64)
*** longjmp causes uninitialized stack frame ***: python terminated
======= Backtrace: =========
/lib/libc.so.6(__fortify_fail+0x37)[0x7f5943473537]
/lib/libc.so.6(+0xff4c9)[0x7f59434734c9]
/lib/libc.so.6(__longjmp_chk+0x33)[0x7f5943473433]
/usr/lib/libcurl-gnutls.so.4(+0xcca5)[0x7f5942a24ca5]
/lib/libpthread.so.0(+0xfb40)[0x7f5944586b40]
/lib/libc.so.6(__select+0x33)[0x7f59434532c3]
python[0x4f4ac3]
python(PyEval_EvalFrameEx+0x516e)[0x4a51ae]
python(PyEval_EvalCodeEx+0x911)[0x4a6bd1]
python(PyEval_EvalFrameEx+0x4d19)[0x4a4d59]
python(PyEval_EvalCodeEx+0x911)[0x4a6bd1]
python(PyEval_EvalCode+0x32)[0x4a6ca2]
python(PyRun_FileExFlags+0x13e)[0x4c702e]
python(PyRun_SimpleFileExFlags+0xd4)[0x4c7244]
python(Py_Main+0xa01)[0x4180c1]
/lib/libc.so.6(__libc_start_main+0xfe)[0x7f5943392d8e]
python[0x4172c9]
There is a simple workaround : use curl.setopt(pycurl.NOSIGNAL, 1)
This will tell libcurl not to use any signal related code that causes in a multithreaded python script this kind of error.
*** longjmp causes uninitialized stack frame ***: python terminated
======= Backtrace: =========
/lib/libc.so.6(__fortify_fail+0x37)[0x7f4260a1d537]
/lib/libc.so.6(+0xff4c9)[0x7f4260a1d4c9]
/lib/libc.so.6(__longjmp_chk+0x33)[0x7f4260a1d433]
/usr/lib/libcurl-gnutls.so.4(+0xcca5)[0x7f425fe1aca5]
/lib/libpthread.so.0(+0xfb40)[0x7f4261b30b40]
/lib/libc.so.6(__select+0x33)[0x7f42609fd2c3]
python[0x4f4ac3]
python(PyEval_EvalFrameEx+0x516e)[0x4a51ae]
python(PyEval_EvalCodeEx+0x911)[0x4a6bd1]
python[0x535c4d]
python(PyObject_Call+0x47)[0x41c9d7]
python(PyEval_EvalFrameEx+0x3861)[0x4a38a1]
python(PyEval_EvalFrameEx+0x5a70)[0x4a5ab0]
Zernia, thank you very much for the workaround!!!
SOLVED my problem on Ubuntu 10.10
Linux host_name 2.6.35-30-generic #59-Ubuntu SMP Tue Aug 30 15:58:00 UTC 2011 i686 GNU/Linux
> There is a simple workaround : use curl.setopt(pycurl.NOSIGNAL, 1)
> This will tell libcurl not to use any signal related code that causes in a
> multithreaded python script this kind of error.