Hi All,
Following is the scenario:

1. I have multi threaded C application.
2.  I have a curl handle(curl_easy_init() initialization is done during
application startup), and a mutex  associated with it.
3.  Every thread acquires a lock, and then calls curl_easy_setopt() and sets
parameters.
Please note that CURLOPT_URL parameter might differ from thread to thread.
4.  This handle is added to curl_multi interface using
curl_multi_add_handle() , and curl_multi_perform() is called.
(I use multiple curls handles each associated with a mutex . Hence
curl_multi interface is used).
5. Later, using curl_multi_remove_handle(), the handle is removed.
6. Also, mutex is released and the handle is ready of further use.

Problem: I am experiencing ocassional crash after  multiple thread runs.

I have following questions:
1.  Is the above usage valid for libcurl on linux?
2.  Is there any restriction on calling curl_easy_setopt() , after
curl_multi_perform() ?


Following is the back trace obtained from coredump using gdb:
#0  0x00b4c7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x00b927a5 in raise () from /lib/tls/libc.so.6
#2  0x00b94209 in abort () from /lib/tls/libc.so.6
#3  0x00bc6a1a in __libc_message () from /lib/tls/libc.so.6
#4  0x00bcd2bf in _int_free () from /lib/tls/libc.so.6
#5  0x00bcd63a in free () from /lib/tls/libc.so.6
#6  0x0060dd74 in setstropt () from /usr/local/lib/libcurl.so.4
#7  0x0060f8ea in Curl_setopt () from /usr/local/lib/libcurl.so.4
#8  0x0061f06b in curl_easy_setopt () from /usr/local/lib/libcurl.so.4

Curl Version details:
curl 7.19.2 (i686-pc-linux-gnu)


Thanks & Regards,
Ameya

Reply via email to