X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fplugin.c;h=6268652d1e172fd2c900aab154927cb81af16382;hb=d37c84fb73cd705e0aceb06a701b764c9be0ebed;hp=e5e24647af1776c924803659df0fb7b7839f5129;hpb=8efc7bf52f66a144875a5d32548d496431a78360;p=connman diff --git a/src/plugin.c b/src/plugin.c index e5e2464..6268652 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -33,6 +33,17 @@ #include "connman.h" +/* + * Plugins that are using libraries with threads and their own mainloop + * will crash on exit. This is a bug inside these libraries, but there is + * nothing much that can be done about it. + */ +#ifdef NEED_THREADS +#define PLUGINFLAG (RTLD_NOW | RTLD_NODELETE) +#else +#define PLUGINFLAG (RTLD_NOW) +#endif + static GSList *plugins = NULL; struct connman_plugin { @@ -124,7 +135,7 @@ int __connman_plugin_init(const char *pattern, const char *exclude) filename = g_build_filename(PLUGINDIR, file, NULL); - handle = dlopen(filename, RTLD_NOW); + handle = dlopen(filename, PLUGINFLAG); if (handle == NULL) { connman_error("Can't load %s: %s", filename, dlerror());