diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2011-05-09 14:37:27 +0100 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2011-05-09 14:41:10 +0100 |
commit | 6d970474ee578f443d86b96b64193052cd1e0528 (patch) | |
tree | 2394d52635049dead091eb0a148cad0d9ebbdd07 | |
parent | bdc460ebc1f7d13cc020849cb16e5541aaee4991 (diff) | |
download | evolution-data-server-6d970474ee578f443d86b96b64193052cd1e0528.tar.gz |
Bug 649433 - e-calendar-factory SIGSEGV while reading hash_table
The root cause of this issue was modules being loaded with RTLD_GLOBAL, and
having conflicting "global" symbols.
There is no reason for modules to be exporting their own symbols to the rest
of the process; add the G_MODULE_BIND_LOCAL flag to the g_module_open() call
to prevent that.
(cherry picked from commit 671aac12c869626339923eee804f604a1d3c4e3c)
-rw-r--r-- | libebackend/e-data-server-module.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libebackend/e-data-server-module.c b/libebackend/e-data-server-module.c index 52fb35bf5..a4f2c4cd0 100644 --- a/libebackend/e-data-server-module.c +++ b/libebackend/e-data-server-module.c @@ -74,7 +74,8 @@ e_data_server_module_load (GTypeModule *gmodule) module = E_DATA_SERVER_MODULE (gmodule); - module->library = g_module_open (module->path, G_MODULE_BIND_LAZY); + module->library = g_module_open (module->path, + G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); if (!module->library) { g_warning ("%s", g_module_error ()); |