Open
Description
calling tlsf_create_with_pool with this exact size crashes on my machine:
size_t size = tlsf_block_size_max() + tlsf_size() + tlsf_pool_overhead();
char* mem = (char*)malloc(size);
auto t = tlsf_create_with_pool(mem, size);
The sizes which are 8 bytes bigger or smaller do not crash.
crashes in insert_free_block on this line:
current->prev_free = block;
Thread 1: EXC_BAD_ACCESS (code=2, address=0x100000019)
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x100000019)
frame #0: 0x0000000100002ee8 gc2 test`insert_free_block(control=0x0000000106800000, block=0x0000000106801980, fl=25, sl=0) at tlsf.c:612
* frame #1: 0x0000000100001b5c gc2 test`block_insert(control=0x0000000106800000, block=0x0000000106801980) at tlsf.c:638
frame #2: 0x00000001000019b3 gc2 test`tlsf_add_pool(tlsf=0x0000000106800000, mem=0x0000000106801988, bytes=4294967312) at tlsf.c:1018
frame #3: 0x00000001000020b9 gc2 test`tlsf_create_with_pool(mem=0x0000000106800000, bytes=4294973848) at tlsf.c:1100
frame #4: 0x0000000100003fcc gc2 test`main(argc=1, argv=0x00007ffeefbff7e8) at main.cpp:301
frame #5: 0x00007fff78e10115 libdyld.dylib`start + 1
frame #6: 0x00007fff78e10115 libdyld.dylib`start + 1
Metadata
Metadata
Assignees
Labels
No labels