When adding the logHelper I tried to prevent changing the API - that's why I did it like this (and the RSA it is not the only bundle that uses more than one logHelper). But looking at your explanation, I think having one logHelper and therefore having an according API change is the preferable solution.


On 2014-12-22 16:55, Alexander Broekhuis wrote:
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.pe...@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.


Reply via email to