celix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Broekhuis <a.broekh...@gmail.com>
Subject Re: Crashes due to logHelper in RemoteServiceAdmin
Date Mon, 22 Dec 2014 16:12:04 GMT
I've pushed a fix for this, can you please check if it is ok now?

2014-12-22 16:55 GMT+01:00 Alexander Broekhuis <a.broekhuis@gmail.com>:

> I've found the problem.
>
> What happens: The LogService uses a ServiceFactory. Following the spec, a
> ServiceFactory will only create an actual service the first time a bundle
> calls "getService". This service is cached, and reused each time a bundle
> does a getService on the factory.
> So for the logger, this means that each bundle has an own instance of the
> logger.
>
> In the case of the RSA, the RSA does a getService, which creates the
> initial log service. Then during an import a new loghelper is created
> (still within the RSA bundle). If for that specific import no proxy bundle
> is available, the import will be destroyed.
> Along with destroying the import, the loghelper is also destroyed. Since
> one bundle only has one log_service, that log_service is nog "unget"ed.
> Which results in the segfault.
>
> A possible solution would be to pass the log_helper via the API to all
> parts of the RSA bundle. Instead of retrieving it again for every object.
>
> Wdyt?
>
>
> 2014-12-22 16:04 GMT+01:00 Bjoern Petri <bjoern.petri@sundevil.de>:
>
>>
>> Hi Alexander,
>>
>> I see the same, but only with the latest commit. So I assume some of your
>> (correct) changes in the last commit is triggering this now. I'll check
>> whether I can figure out what's going on here ...
>>
>> Regards,
>>   Bjoern
>>
>>
>>
>> On 2014-12-22 15:01, Alexander Broekhuis wrote:
>>
>>> Hi,
>>>
>>> I'm working on the current remote_proxy_factory to make it more generic,
>>> so
>>> that it is easier to use.
>>>
>>> During testing I ran into a crash when an endpoint is published for which
>>> no proxy bundle is available. This crash is due to a call to the
>>> logHelper_log function. I tried to trace the problem but don't see
>>> anything
>>> whats going on. At some point an internal pointer of the log_service
>>> becomes invalid...
>>>
>>> @Bjoern: I see you pushed the changes to the RSA with the LogHelper, have
>>> you seen this before? I can reproduce it by simply running the calculator
>>> example of the current master.
>>>
>>
>
>
> --
> Met vriendelijke groet,
>
> Alexander Broekhuis
>



-- 
Met vriendelijke groet,

Alexander Broekhuis

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message