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