I’ve encountered a crash when running a debug build of some code that implements a custom Drop function. It only appears to happen on the
x86_64-apple-darwin target built in debug mode, but I do not have access to every target to test against.
I’m not sure if it is an error on my part implementing the drop trait for a collection that uses raw pointers, or if it may be a compiler code gen bug? I do not know enough about lower level assembly to be able to diagnose, so I was hoping someone here might be able to shed some light on why this is happening…?
Here is a MVC - https://github.com/nathansizemore/weird-drop
weird-drop/bin contains a simple cargo generated bin project for reproducing the crash.
Without a debugger, I received the message
$ cargo run --verbose error: Process didn't exit successfully: `target/debug/bin` (signal: 11, SIGSEGV: invalid memory reference)
Info from LLDB
Process 47052 stopped * thread #1: tid = 0x4705e, 0x00007fff9396c5de libsystem_malloc.dylib`tiny_free_list_remove_ptr + 267, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18) frame #0: 0x00007fff9396c5de libsystem_malloc.dylib`tiny_free_list_remove_ptr + 267 libsystem_malloc.dylib`tiny_free_list_remove_ptr: -> 0x7fff9396c5de <+267>: movq %rax, 0x8(%rcx) 0x7fff9396c5e2 <+271>: testq %r14, %r14 0x7fff9396c5e5 <+274>: jne 0x7fff9396c605 ; <+306> 0x7fff9396c5e7 <+276>: jmp 0x7fff9396c625 ; <+338>
Things that do not cause crash
- If the
print!macro is used
- Built with -O3