Is this a bug?
monarch_dodra via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun May 4 03:36:52 PDT 2014
On Sunday, 4 May 2014 at 09:42:17 UTC, Alex wrote:
> Hello,
>
> I am trying to use the std.log module that is here:
>
> https://github.com/linkrope/log.d
>
> And I encountered a segmentation fault using dmd 2.065 on a
> Linux 64 platform. The reduced test case is this:
>
> //============================================================================
> import std.stdio;
> import std.log;
>
> private class CHello {
>
> ~this() {
> info("info - destructor"); //info, warning, error segfault;
> however, writefln works
> }
> }
>
> void main(string[] args) { CHello chello = new CHello(); }
> //============================================================================
>
> Is this a bug?
Maybe, maybe not. As rule of thumb, you can't allocate during a
GC cleaning cycles, and class destructors are usually called
during a GC cleaning cycle.
This means it is usually unsafe to call *anything* that could
potentially allocate in a destructor.
I don't know the details of the log module. AFAIK, the code
itself doesn't *seem* to allocate anything to just log, but it
does seem to use a singleton logger object.
Could you try to log a single "info" in your main, and see if it
resolves the issue?
We'd need to contact the author directly too about this issue.
More information about the Digitalmars-d-learn
mailing list