Thread overview
Which debugger can explain InvalidMemoryOperationError?
Jan 17, 2019
Victor Porton
Jan 17, 2019
Alex
Jan 17, 2019
Victor Porton
Jan 17, 2019
Victor Porton
Jan 18, 2019
Rainer Schuetze
Jan 18, 2019
kinke
January 17, 2019
After main() of my program finishes, I have this error message:

core.exception.InvalidMemoryOperationError@core/exception.d(700): Invalid memory operation

Which debugger (preferably with a GUI interface) do you suggest to investigate this error?

I tried DDD and KDbg.

In DDD when I set `catch throw InvalidMemoryOperationError` or `catch throw core.exception.InvalidMemoryOperationError`, the exception is not called nevertheless.

In KDbg, I don't see any way to set an exception breakpoint, at all.

I use LDC2.
January 17, 2019
On Thursday, 17 January 2019 at 16:37:55 UTC, Victor Porton wrote:
> After main() of my program finishes, I have this error message:
>
> core.exception.InvalidMemoryOperationError@core/exception.d(700): Invalid memory operation
>
> Which debugger (preferably with a GUI interface) do you suggest to investigate this error?
>
> I tried DDD and KDbg.
>
> In DDD when I set `catch throw InvalidMemoryOperationError` or `catch throw core.exception.InvalidMemoryOperationError`, the exception is not called nevertheless.
>
> In KDbg, I don't see any way to set an exception breakpoint, at all.
>
> I use LDC2.

Which operating system do you use? And which compiler version?
Is this maybe another occurrence of
https://github.com/ldc-developers/ldc/issues/2820
?

If so, do you have a usable minimal example of your code to post and try it out?
January 17, 2019
On Thursday, 17 January 2019 at 20:41:27 UTC, Alex wrote:
> On Thursday, 17 January 2019 at 16:37:55 UTC, Victor Porton wrote:
>> After main() of my program finishes, I have this error message:
>>
>> core.exception.InvalidMemoryOperationError@core/exception.d(700): Invalid memory operation
>>
>> Which debugger (preferably with a GUI interface) do you suggest to investigate this error?
>>
>> I tried DDD and KDbg.
>>
>> In DDD when I set `catch throw InvalidMemoryOperationError` or `catch throw core.exception.InvalidMemoryOperationError`, the exception is not called nevertheless.
>>
>> In KDbg, I don't see any way to set an exception breakpoint, at all.
>>
>> I use LDC2.
>
> Which operating system do you use? And which compiler version?
> Is this maybe another occurrence of
> https://github.com/ldc-developers/ldc/issues/2820
> ?
>
> If so, do you have a usable minimal example of your code to post and try it out?

No, for me my bug is worse than #2820: I do not see any stack trace. I do not claim that there is a bug in a compiler (actually I am almost sure that it is my mistake and I do something like freeing memory twice).

I need help to get a stack trace for the very reason that I do not want to spend time producing a minimal example, but want to use a debugger instead.

Ubuntu Linux 18.10.

$ ldc2 --version
LDC - the LLVM D compiler (1.11.0):
  based on DMD v2.081.2 and LLVM 6.0.1
January 17, 2019
On Thursday, 17 January 2019 at 16:37:55 UTC, Victor Porton wrote:
> After main() of my program finishes, I have this error message:
>
> core.exception.InvalidMemoryOperationError@core/exception.d(700): Invalid memory operation
>
> Which debugger (preferably with a GUI interface) do you suggest to investigate this error?
>
> I tried DDD and KDbg.
>
> In DDD when I set `catch throw InvalidMemoryOperationError` or `catch throw core.exception.InvalidMemoryOperationError`, the exception is not called nevertheless.
>
> In KDbg, I don't see any way to set an exception breakpoint, at all.
>
> I use LDC2.

I've tried it with plain GDB 8.2.

The following does not work:

catch throw InvalidMemoryOperationError
catch throw core.exception.InvalidMemoryOperationError

Despite of the above commands, the exception is not caught and so I am unable to see the callstack which has led to the exception.

Please help me to find a way to see the callstack in order to be able to debug my software!
January 18, 2019

On 17/01/2019 23:12, Victor Porton wrote:
> On Thursday, 17 January 2019 at 16:37:55 UTC, Victor Porton wrote:
>> After main() of my program finishes, I have this error message:
>>
>> core.exception.InvalidMemoryOperationError@core/exception.d(700):
>> Invalid memory operation
>>
>> Which debugger (preferably with a GUI interface) do you suggest to
>> investigate this error?
>>
>> I tried DDD and KDbg.
>>
>> In DDD when I set `catch throw InvalidMemoryOperationError` or `catch throw core.exception.InvalidMemoryOperationError`, the exception is not called nevertheless.
>>
>> In KDbg, I don't see any way to set an exception breakpoint, at all.
>>
>> I use LDC2.
> 
> I've tried it with plain GDB 8.2.
> 
> The following does not work:
> 
> catch throw InvalidMemoryOperationError
> catch throw core.exception.InvalidMemoryOperationError
> 
> Despite of the above commands, the exception is not caught and so I am unable to see the callstack which has led to the exception.
> 
> Please help me to find a way to see the callstack in order to be able to debug my software!

You might want to set a breakpoint on function onInvalidMemoryOperationError. Probably this is the function that is throwing the error.

Debugging experience will likely improve if you build the runtime library with debug information. (see https://wiki.dlang.org/Building_under_Posix).
January 18, 2019
On Friday, 18 January 2019 at 07:48:21 UTC, Rainer Schuetze wrote:
> Debugging experience will likely improve if you build the runtime library with debug information. (see https://wiki.dlang.org/Building_under_Posix).

He's using LDC, so he'll just need to specify `-link-defaultlib-debug` in the LDC command line.