Compatibilité de QxMemLeak avec OSX
bonjour,
Souhaitant profiter de QxMemLeak sous OSX, j'ai tenté de compiler QxOrm avec l'option _QX_USE_MEM_LEAK_DETECTION.
Ca ne compilait pas...:aie:
Le problème semle venir de certaines variables locales définies dans
- QxMemLeak/fixed_mem_pool.h (ligne 175)
- QxMemLeak/static_mem_pool.h (ligne 190)
qui portent le nom "__block".
"__block" est un nom réservé sous OSX.
J'ai refactorisé "__block" en "__block_" et la compilation de QxOrm avec QxMemLeak se déroule sans problème.:ccool:
Maintenant, quel que soit le projet (testé avec QxBlog et mon projet), le programme "abort()" dès le lancement (Ligne 424 debug_new.cpp)
Voici la pile :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| 0 __pthread_kill 0 0x7fff91dbace2
1 pthread_kill 0 0x7fff925bc7d2
2 abort 0 0x7fff925ada7a
3 qx::memory::__debug_new_recorder::free_pointer debug_new.cpp 424 0x100a995c0
4 operator delete[] mem_leak.h 53 0x10017e184
5 QFSFileEngineIterator::advance 0 0x10129fd02
6 QFSFileEngineIterator::next 0 0x101298343
7 QDirIteratorPrivate::advance 0 0x10125ceef
8 QDirIterator::next 0 0x10125d0ac
9 QDir::entryList 0 0x10125a6fb
10 QDir::entryList 0 0x10125a877
11 QFactoryLoader::update 0 0x1012af21c
12 QFactoryLoader::QFactoryLoader 0 0x1012b0c8c
13 loader 0 0x101182940
14 QSqlDatabasePrivate::init 0 0x101184536
15 QSqlDatabase::addDatabase 0 0x101184aa4
16 qx::QxSqlDatabase::createDatabase QxSqlDatabase.cpp 58 0x100aedf57
17 qx::QxSqlDatabase::getDatabaseByCurrThreadId QxSqlDatabase.cpp 44 0x100aee593
18 qx::QxSqlDatabase::getDatabase QxSqlDatabase.h 120 0x1000716cc
19 qx::dao::detail::IxDao_Helper::init QxDao_Helper.inl 182 0x1000717fc
20 qx::dao::detail::QxDao_Helper<author>::QxDao_Helper QxDao_Helper.inl 226 0x1000fc0d1
21 qx::dao::detail::QxDao_CreateTable<author>::createTable QxDao_CreateTable.inl 37 0x1001ac03a
22 qx::dao::create_table<author> QxDao.h 855 0x1001ac6f4
23 main main.cpp 26 0x10016d681
... <plus> |
les appels "operator delete" (ligne 52 mem_leak.h) passent sans problème, c'est les appels à
"operator delete[]" (ligne 53 mem_leak.h" qui lancent "abort()" via _DEBUG_NEW_ERROR_ACTION.
Si quequ'un a la solution ? Je suis preneur !:calim2: