Hi,

I encountered a SEGV in libslp during exit of an application. It turned out that
the application called SLPDereg() via atexit(). However, libslp itself already
cleaned-up its properties via atexit() as well, causing the SEGV.

The following small patch simply disables libslp's atexit() handler. I don't
believe it is needed anyway, since the used memory will be freed
at application exit automatically.

The patch is against trunk/r1589.

Kind regards,
   Roel van de Kraats


--- begin patch ---

Skip cleaning-up via atexit(), since it causes problems with applications that 
will try to deregister via atexit() as well.
Roel van de Kraats

diff -ur openslp-2.0.beta1.r1589/libslp/libslp_property.c 
openslp-2.0.beta1/libslp/libslp_property.c
--- openslp-2.0.beta1.r1589/libslp/libslp_property.c    2008-03-27 
00:27:22.000000000 +0100
+++ openslp-2.0.beta1/libslp/libslp_property.c  2008-06-27 09:02:03.000000000 
+0200
@@ -69,7 +69,9 @@
       SLPSpinLockAcquire(&s_PropInitLock);
       if (!s_PropInited && (rv = SLPPropertyInit(gconffile)) == 0);
       {
-         atexit(SLPPropertyExit);
+/* Cleaning-up via atexit() will cause problems with applications that will 
try to deregister via atexit() as well. */
+/* Since memory will be freed at exit anyway, just skip the clean-up routine. 
*/
+/*         atexit(SLPPropertyExit); */
          s_PropInited = true;
       }
       SLPSpinLockRelease(&s_PropInitLock);



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Openslp-devel mailing list
Openslp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openslp-devel

Reply via email to