You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Robert Middleton (Jira)" <lo...@logging.apache.org> on 2021/08/20 00:40:00 UTC
[jira] [Updated] (LOGCXX-532) Static objects and deleting
[ https://issues.apache.org/jira/browse/LOGCXX-532?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Robert Middleton updated LOGCXX-532:
------------------------------------
Description:
As seen in LOGCXX-430 and LOGCXX-322, making sure that when an application terminates earlier than expected we don't crash is rather hard to do.
I came across this solution when researching this problem:
https://stackoverflow.com/a/470545/624483
My thought is that we create something like a log4cxx::Globals class, which contains a smart pointer to everything that must be kept alive before the library can safely be unloaded. In each thread, you would do something like:
{{GlobalsPtr globals = log4cxx::globals;}}
thus ensuring that the destructor can't run before all of the threads are stopped. This would be up to the user of the library.
was:
As seen in LOGCXX-430 and LOGCXX-322, making sure that when an application terminates earlier than expected we don't crash is rather hard to do.
I came across this solution when researching this problem:
https://stackoverflow.com/a/470545/624483
My thought is that we create something like a log4cxx::Globals class, which contains a smart pointer to everything that must be kept alive before the library can safely be unloaded. In each thread, you would do something like:
```
GlobalsPtr globals = log4cxx::globals;
```
thus ensuring that the destructor can't run before all of the threads are stopped. This would be up to the user of the library.
> Static objects and deleting
> ---------------------------
>
> Key: LOGCXX-532
> URL: https://issues.apache.org/jira/browse/LOGCXX-532
> Project: Log4cxx
> Issue Type: Improvement
> Reporter: Robert Middleton
> Assignee: Robert Middleton
> Priority: Minor
>
> As seen in LOGCXX-430 and LOGCXX-322, making sure that when an application terminates earlier than expected we don't crash is rather hard to do.
> I came across this solution when researching this problem:
> https://stackoverflow.com/a/470545/624483
> My thought is that we create something like a log4cxx::Globals class, which contains a smart pointer to everything that must be kept alive before the library can safely be unloaded. In each thread, you would do something like:
> {{GlobalsPtr globals = log4cxx::globals;}}
> thus ensuring that the destructor can't run before all of the threads are stopped. This would be up to the user of the library.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)