Since libosmocore Id7711893b34263baacac6caf4d489467053131bb, a new API
log_enable_multithread() is available which takes care of protecting
logging infrastructure from us (and actually does it correctly since we
cannot protect internal libosmocore structures from osmo-trx).
Let's drop all mutex related code from osmo-trx logging infra and simply
rely on libosmocore's.
Related: OS#4088
Change-Id: I519d0f30bce871005ca26b90177ea4aa4839360a
pthread_cancel is implemented in c++ using exception handlers. In
destructor of Log object, the log function is called which will
eventually call fputs() to write to a file. Since that function is
considered a cancelation point, if pthread_cancel has been called the
exception handler will start unstacking frames and calling destructors
in the process. At some point this will cause a runtime exception in c++
which will call std::terminate() to abort the process.
The solution is thus to avoid starting the cancellation process inside the
destructor.
This behavior was spotted while calling the destructor of Transceiver
object in forthcoming patches.
See a more detailed example here:
https://skaark.wordpress.com/2010/08/26/pthread_cancel-considered-harmful/
Change-Id: I71ca90f3fbc73df58b878a03361f7b7831d838b4
We still need an intermediate class Logger due to osmo-trx being
multi-threaded and requiring to have a lock to use libosmocore, which is
not thread safe.
Change-Id: I30baac89f53e927f8699d0586b43cccf88ecd493
This feature is currently not being used, so let's simplify current code
to move to libosmocore logging system in the future.
Change-Id: If2c77c776823f595130edac963be953026049423
This feature is currently not being used, so let's drop it to make it
easier to integrate into libosmocore logging system in the future.
Change-Id: I8282745ef0282d41599eaf94fe460a1d29b18e2a
It's only used internally inside the Logger module, and in case there's
an "alarm" (level more than critical) we still print on cerr, so we can
just rely on our system catching stderr instead of stdout to handle it.
Change-Id: I6d6df1578c3a4c1a37bd0d69952d443f62eed2ab
This is a required step towards getting rid of ConfigurationTable class
and libsqlite dependency.
As a side effect, support for different log levels for different files
is dropped, but it's not something really being used and we will end up
dropping current logging system in favour of osmocom's one in the future
anyway.
Change-Id: I51cb12d1ab7e103e78190ac71a70fb5bb1d9ff51
When we enable DEBUG logging level, syslog gets Gb's of data and can completely
exhaust the file system free space. Now we can just enable it. This is not to
say that logging to syslog it just not very useful in general.
CommonLibs: Avoid direct syslog calls in ConfigurationTable
We instead introduce a 'log early' facility in Logger.h to accomplish
the same
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
I added similar code to the reporting functions, which did not exist when sylvain made this patch
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4629 19bc5d8c-e614-43d4-8b26-e1612bc8e597