From 44476d7e762bc0b45c509269ba1ac639fbde7aef Mon Sep 17 00:00:00 2001 From: Bruno Tarquini Date: Thu, 17 Nov 2011 10:54:54 +0000 Subject: [PATCH] From: Bruno Tarquini Subject: [Patch] expedite: fix segfault at exit shutdown the engine before evas because Xext, Xrender and GL (loaded by evas) seem to register a hook which is called in XCloseDisplay (in engine_shutdown()). this segfault because evas_shutdown() should unload those libs, and so, invalidate the hook pointer. this bug was already noted by caro in @43373: > strangely, the xrender xlib and gl xlib engines are segfaulting when XCloseDisplay is called (in the shutdown function). > It does not with soft xlib. I absolutely don't know why. with this proper fix, remove also Xext, Xrender from dependencies, which are not used directly by expedite. triggered by compiling with --as-needed, because it removed unused libs: libXrender, libXext. tested with xlib, gl and sdl engine SVN revision: 65336 --- AUTHORS | 1 + configure.ac | 4 ++-- src/bin/main.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/AUTHORS b/AUTHORS index 414ee67..7af8764 100644 --- a/AUTHORS +++ b/AUTHORS @@ -2,3 +2,4 @@ The Rasterman (Carsten Haitzler) Tim Horton Saumsung Electronics Samsung SAIT +Bruno Tarquini diff --git a/configure.ac b/configure.ac index 4ae097c..1f9596c 100644 --- a/configure.ac +++ b/configure.ac @@ -151,11 +151,11 @@ if test "x$have_software_xlib" = "xyes" -o "x$have_software_16_x11" = "xyes" -o [have_xlib="yes"], [have_xlib="no"]) if test "x$want_evas_simple_x11" = "xyes"; then - x_libs="${x_libs} -lX11 -lXext -lXrender" + x_libs="${x_libs} -lX11" else x_dir=${x_dir:-/usr/X11R6} x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}} - x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender" + x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11" fi fi AM_CONDITIONAL(BUILD_X11, [test "x$have_xlib" = "xyes"]) diff --git a/src/bin/main.c b/src/bin/main.c index ba0bd8d..0b77411 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -1382,7 +1382,7 @@ main(int argc, char **argv) evas_free(evas); - evas_shutdown(); engine_shutdown(); + evas_shutdown(); return 0; }