Looks good -- does this interfere with your atexit() case?
On Fri, Jul 25, 2008 at 2:39 AM, Roel van de Kraats
<[EMAIL PROTECTED]>wrote:
>
>
> On 07/24/2008 08:13 PM, Nick Wagner wrote:
>
>> By which I mean having a LIBSLPPropertyCleanup() that checks s_PropInited
>> and does the SLPSpinLockAcquire on the s_PropInitLock before calling
>> SLPPropertyExit.
>>
> Sounds good. Please have a look at rev 1595 for my implementation (I was
> the one who removed the old clean-up functionality, so I'm the one to get it
> working again ;-)
>
> Roel
>
>> --Nick
>>
>>
>> On Thu, Jul 24, 2008 at 1:10 PM, Nick Wagner <[EMAIL PROTECTED]<mailto:
>> [EMAIL PROTECTED]>> wrote:
>>
>> What if we call SLPPropertyExit as part of the cleanup in
>> libslp_handle:ExitUserAgentLibrary?
>>
>>
>> On Mon, Jun 30, 2008 at 8:07 AM, Roel van de Kraats
>> <[EMAIL PROTECTED]> wrote:
>>
>> 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
>> <mailto:Openslp-devel@lists.sourceforge.net>
>> https://lists.sourceforge.net/lists/listinfo/openslp-devel
>>
>>
>>
>>
>
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Openslp-devel mailing list
Openslp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openslp-devel