Still crashing with the Oricutron_win*-20201222 versions, the SDL1 runs fine, the SDL2 crashes, and for some reason I do not have all the symbols.
The crash happens in the thread "SDLAudioP1" on a memory allocation from the SDL_RunAudio callback:
Code: Select all
ntdll.dll!RtlpCreateSplitBlock() Unknown
ntdll.dll!RtlpReAllocateHeap() Unknown
ntdll.dll!RtlpReAllocateHeapInternal() Unknown
ntdll.dll!RtlReAllocateHeap() Unknown
ntdll.dll!RtlpAllocateUserBlockFromHeap() Unknown
ntdll.dll!RtlpAllocateUserBlock() Unknown
ntdll.dll!RtlpLowFragHeapAllocFromContext() Unknown
ntdll.dll!RtlpAllocateHeapInternal() Unknown
msvcrt.dll!malloc() Unknown
oricutron-sdl2.exe!SDL_malloc_REAL(unsigned __int64 size) Line 5328 C++
[External Code]
oricutron-sdl2.exe!SDL_RunAudio(void * devicep) Line 697 C++
[External Code]
oricutron-sdl2.exe!RunThreadViaBeginThreadEx(void * data) Line 105 C++
[External Code]
The last place where I have source code is there:
Code: Select all
void *SDL_malloc(size_t size)
{
0000000000485170 push r12
0000000000485172 sub rsp,20h
void *mem;
if (!size) {
size = 1;
}
mem = s_mem.malloc_func(size);
0000000000485176 mov eax,1
000000000048517B test rcx,rcx
000000000048517E cmove rcx,rax
0000000000485182 call qword ptr [5407A0h] <------ call to the actual ntdll allocation code
0000000000485188 mov r12,rax
if (mem) {
000000000048518B test rax,rax
000000000048518E je 00000000004851A1
SDL_AtomicIncRef(&s_mem.num_allocations);
0000000000485190 mov edx,1
0000000000485195 lea rcx,[5407C0h]
000000000048519C call 00000000004CE6D0
}
return mem;
}
00000000004851A1 mov rax,r12
00000000004851A4 add rsp,20h
00000000004851A8 pop r12
00000000004851AA ret
From what I see, the code crashes pretty much before we even enter "main", but I don't have much debugging information on the Main Thread:
Code: Select all
[External Code]
oricutron-sdl2.exe!WinMainCRTStartup() Line 197 C++
[External Code]
I was wondering, recently Ibisum setup automated builds for... was it for the 8bit unity? or something, anyway, would it make sense to have the same thing setup on Oricutron, so each commit immediately triggers the generation of all the common versions (windows, linux, mac, in 32 and x64 version, with and without symbols, ...) so any broken code can immediately be detected, and any new feature immediately tested?