Удачи с производительностью, потреблением памяти и доступом к нативным фичам.
mlock
зачем-то. Не помню уже, что там вызывало проблему, но я решил проверить.debug("Get item " + Token::uitohex(hkey) + " dict='" + m_msg_name + "' m_top=" + Token::itoa(m_top));
std::string
вызывает new
, который вызывает malloc
, который и сообщает, что у объекта не совпадает контрольная сумма, что бывает, если указатель освобождён, а освобождённый объект после этого кто-то изменил.malloc
.mlock
. С mlock
всё работает.Process 1211 launched: '/Users/andrey/Documents/Eclipse/Workspace/fpli_0.4.bad/Debug/fpli' (x86_64)
Creating stack & storage
Stack & storage created
Creating function: 0x0c1e7e96 '.'
Function created: 0x0c1e7e96 '.' index=1
Creating function: 0x155ed7d5 'dump'
Function created: 0x155ed7d5 'dump' index=2
Creating function: 0x11455d5e 'at'
Function created: 0x11455d5e 'at' index=3
Creating function: 0x20bc0470 'for_each_back'
Function created: 0x20bc0470 'for_each_back' index=4
Creating function: 0x1728a217 'for_each'
Function created: 0x1728a217 'for_each' index=5
Creating function: 0x10507577 'swap'
Function created: 0x10507577 'swap' index=6
Creating function: 0x105d4847 'drop'
Function created: 0x105d4847 'drop' index=7
Creating function: 0x105fa8a7 'over'
Function created: 0x105fa8a7 'over' index=8
fpli(1211,0x1004fe5c0) malloc: Incorrect checksum for freed object 0x100604788: probably modified after being freed.
Corrupt value: 0x30000100603b4
fpli(1211,0x1004fe5c0) malloc: *** set a breakpoint in malloc_error_break to debug
Process 1211 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x00007fff6e9732c6 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill:
-> 0x7fff6e9732c6 <+10>: jae 0x7fff6e9732d0 ; <+20>
0x7fff6e9732c8 <+12>: movq %rax, %rdi
0x7fff6e9732cb <+15>: jmp 0x7fff6e96d457 ; cerror_nocancel
0x7fff6e9732d0 <+20>: retq
Target 0: (fpli) stopped.
(lldb) bt
error: fpli debug map object file '/Users/andrey/Documents/Eclipse/Workspace/fpli/Debug/source/fpli.o' has changed (actual time is 2019-07-27 00:24:56.000000000, debug map time is 2019-07-25 23:18:41.000000000) since this executable was linked, file will be ignored
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
* frame #0: 0x00007fff6e9732c6 libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x00007fff6ea2ebf1 libsystem_pthread.dylib`pthread_kill + 284
frame #2: 0x00007fff6e8dd6a6 libsystem_c.dylib`abort + 127
frame #3: 0x00007fff6e9ec077 libsystem_malloc.dylib`malloc_vreport + 545
frame #4: 0x00007fff6ea04e0d libsystem_malloc.dylib`malloc_zone_error + 183
frame #5: 0x00007fff6e9e4f17 libsystem_malloc.dylib`tiny_malloc_from_free_list + 1310
frame #6: 0x00007fff6e9e443b libsystem_malloc.dylib`tiny_malloc_should_clear + 314
frame #7: 0x00007fff6e9e420f libsystem_malloc.dylib`szone_malloc_should_clear + 66
frame #8: 0x00007fff6e9e2c99 libsystem_malloc.dylib`malloc_zone_malloc + 103
frame #9: 0x00007fff6e9e2c15 libsystem_malloc.dylib`malloc + 24
frame #10: 0x00007fff6bab7378 libc++abi.dylib`operator new(unsigned long) + 40
frame #11: 0x00007fff6ba6de20 libc++.1.dylib`std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long, unsigned long) + 66
frame #12: 0x0000000100135700 fpli`std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) + 128
frame #13: 0x00000001001359f6 fpli`Dictionary::dict_get_item(unsigned int) + 150
frame #14: 0x0000000100138efe fpli`FunctionDictionary::get_function(unsigned int) + 30
frame #15: 0x00000001000a2b93 fpli`IFunction* find_function<RefOverFunction>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 291
frame #16: 0x00000001000a0eb7 fpli`StackType::StackType() + 1079
frame #17: 0x00000001000a5405 fpli`StackType::StackType() + 21
frame #18: 0x000000010013d171 fpli`TypeDictionary::create_types() + 225
frame #19: 0x000000010018986a fpli`main + 650
frame #20: 0x00007fff6e8383d5 libdyld.dylib`start + 1
frame #21: 0x00007fff6e8383d5 libdyld.dylib`start + 1