Hello,
I want to propose the follow flag for raptor in liblrdf library:
#if RAPTOR_VERSION >= 20000
raptor_world_set_flag(world, RAPTOR_WORLD_FLAG_WWW_SKIP_INIT_FINISH, 1);
#endif
before raptor_world_open() is called (explicitly or implicitly),
for example after raptor_new_world() in lrdf_init().
That flag avoids to call curl_global_init() (not thread-safe) in
raptor_www_init() and curl_global_cleanup() in raptor_www_finish().
Rare but possible (I'm lucky), if raptor is compiled with curl support,
I have experienced the follow crash during Rosegarden startup:
#0 0x00007ffff0a84f39 in lh_insert () from /lib64/libcrypto.so.1
#1 0x00007ffff0a087ba in OBJ_NAME_add () from /lib64/libcrypto.so.1
#2 0x00007ffff0a94cf8 in OpenSSL_add_all_ciphers () from /lib64/libcrypto.so.1
#3 0x00007ffff0a94cae in OPENSSL_add_all_algorithms_noconf () from /lib64/libcrypto.so.1
#4 0x00007ffff1acf20c in ?? () from /usr/lib64/libcurl.so.4
#5 0x00007ffff1ad605a in curl_global_init () from /usr/lib64/libcurl.so.4
#6 0x00007ffff22cc0fa in raptor_www_init () from /usr/lib64/libraptor2.so.0
#7 0x00007ffff22c9ef0 in raptor_world_open () from /usr/lib64/libraptor2.so.0
#8 0x00007ffff22c63f1 in raptor_new_uri () from /usr/lib64/libraptor2.so.0
#9 0x00007ffff5d26701 in lrdf_read_file_intl () from /usr/lib64/liblrdf.so.2
#10 0x00007ffff5d27626 in lrdf_read_file () from /usr/lib64/liblrdf.so.2
#11 0x00000000004d8d79 in Rosegarden::LADSPAPluginFactory::discoverPlugins() ()
The code is a simple lrdf_init, for-loop of lrdf_read_file, lrdf_cleanup,
and curl seems useless to read/manipulate rdf files for LADSPA plugins.
I have recompiled raptor without curl support
--with-www=xml
to use libxml, so the only work in raptor_www_init() is to set
world->www_initialized = 1;
without the call for curl_global_init().