[LAD] Segfault with liblrdf if raptor is compiled with curl support

Tito Latini tito.01beta at gmail.com
Mon Sep 28 08:39:57 UTC 2015


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);

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


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().

More information about the Linux-audio-dev mailing list