How to get call stack for InvalidMemoryOperationError while doing unittest?
    Steven Schveighoffer 
    schveiguy at gmail.com
       
    Fri Jan 15 14:53:25 UTC 2021
    
    
  
On 1/13/21 1:22 PM, apz28 wrote:
> core.exception.InvalidMemoryOperationError at src\core\exception.d(647): 
> Invalid memory operation
I've struggled with this as well. It doesn't even tell you the original 
usage point that causes the exception.
I believe stack traces are disabled from printing on this because of the 
fact that it needs some memory to print the trace or walk the trace 
(this is fuzzy, I think it might not need memory, but I can't remember 
exactly).
You can override the handling of memory errors by defining it yourself:
extern(C) void onInvalidMemoryOperationError(void *pretend_sideeffect = 
null) @trusted pure nothrow @nogc
{
    // try to print stack trace here yourself...
}
A very *very* common reason this is triggered is because a GC destructor 
is trying to allocate memory (this is not allowed during GC cleanup). 
But without knowing the trace, it's really hard to find it.
-Steve
    
    
More information about the Digitalmars-d-learn
mailing list