-
Notifications
You must be signed in to change notification settings - Fork 118
Open
Labels
Description
The simple following program crashes if linking against snmallocshim-static (MSYS2, with clang64 but reproducible on any other MinGW environment):
main.cpp:
#include <QObject>
int main(int argc, char *argv[]) {
delete new QObject;
return 0;
}$ clang++ main.cpp \
-I/clang64/include/qt6/ \
-I/clang64/include/qt6/QtCore \
-std=c++20 \
/clang64/lib/libQt6Core.dll.a \
libsnmallocshim-static.a \
-lbcrypt -rdynamic
$ lldb ./a.exe
(lldb) r
Process 19300 stopped
* thread #1, stop reason = Exception 0x80000003 encountered at address 0x7ffbd2e9ca82
frame #0: 0x00007ffbd2e9ca83 ntdll.dll`RtlIsZeroMemory + 163
ntdll.dll`RtlIsZeroMemory:
-> 0x7ffbd2e9ca83 <+163>: jmp 0x7ffbd2e9ca91 ; <+177>
0x7ffbd2e9ca85 <+165>: movq 0xf8(%rsp), %rdi
0x7ffbd2e9ca8d <+173>: movl 0x20(%rsp), %ebx
0x7ffbd2e9ca91 <+177>: movl %ebx, 0x30(%rsp)
(lldb) bt
* thread #1, stop reason = Exception 0x80000003 encountered at address 0x7ffbd2e9ca82
* frame #0: 0x00007ffbd2e9ca83 ntdll.dll`RtlIsZeroMemory + 163
frame #1: 0x00007ffbd2ea5b5a ntdll.dll`__misaligned_access + 1066
frame #2: 0x00007ffbd2ea5e3a ntdll.dll`__misaligned_access + 1802
frame #3: 0x00007ffbd2eb1e35 ntdll.dll`__misaligned_access + 50949
frame #4: 0x00007ffbd2dcc3bc ntdll.dll`RtlGetCurrentServiceSessionId + 4892
frame #5: 0x00007ffbd2dcb001 ntdll.dll`RtlFreeHeap + 81
frame #6: 0x00007ffbd016364b ucrtbase.dll`_free_base + 27
frame #7: 0x00007ff65dd213f0 a.exe`main + 96
frame #8: 0x00007ff65dd21303 a.exe`__tmainCRTStartup at crtexe.c:259:15
frame #9: 0x00007ff65dd21366 a.exe`mainCRTStartup at crtexe.c:180:9
frame #10: 0x00007ffbd134259d kernel32.dll`BaseThreadInitThunk + 29
frame #11: 0x00007ffbd2deaf38 ntdll.dll`RtlUserThreadStart + 40
thus I assume I am linking something incorrectly and some allocations made with ucrt are free with snmalloc or conversely which then makes ucrt scream.