|
rand_s и win32 - падение базы
|
|||
---|---|---|---|
#18+
Всем привет. Кто хорошо разбирается в коде sqlite и знает зачем sqlite при работе может понадобиться случайное число у меня тут приложение у 4-х юзеров неизвестных упало по abort (Fatal Application Exit) со странным стеком в момент запуска у себя повторить под отладкой не могу. https://drdump.com/DumpGroup.aspx?DumpGroupID=531264 https://drdump.com/DumpGroup.aspx?DumpGroupID=533631 flylinkdc!abort+0x38 flylinkdc!__acrt_RtlGenRandom+0x56 flylinkdc!rand_s+0x2c flylinkdc!sqlite3_win32_mbcs_to_utf8+0x2e3c flylinkdc!_Mtxunlock+0xc flylinkdc!sqlite3_vfs_find+0x8d Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Поставил на rand_s бреку - действительно туда заходит и странно, что данный код включен только под виндой зачем это используется в движке? я делаю простой insert: insert into location_db.fly_p2pguard_ip (start_ip,stop_ip,note,type) values(?,?,?,?) Стек другой и не падает FlylinkDC_Debug_x64.exe!winRandomness(sqlite3_vfs * pVfs, int nBuf, char * zBuf) Line 42445 C FlylinkDC_Debug_x64.exe!sqlite3OsRandomness(sqlite3_vfs * pVfs, int nByte, char * zBufOut) Line 19734 C FlylinkDC_Debug_x64.exe!sqlite3_randomness(int N, void * pBuf) Line 26121 C FlylinkDC_Debug_x64.exe!writeJournalHdr(Pager * pPager) Line 47320 C FlylinkDC_Debug_x64.exe!pager_open_journal(Pager * pPager) Line 51487 C FlylinkDC_Debug_x64.exe!pager_write(PgHdr * pPg) Line 51672 C FlylinkDC_Debug_x64.exe!sqlite3PagerWrite(PgHdr * pPg) Line 51847 C FlylinkDC_Debug_x64.exe!sqlite3BtreeDelete(BtCursor * pCur, unsigned char flags) Line 65928 C FlylinkDC_Debug_x64.exe!sqlite3VdbeExec(Vdbe * p) Line 81718 C FlylinkDC_Debug_x64.exe!sqlite3Step(Vdbe * p) Line 75139 C FlylinkDC_Debug_x64.exe!sqlite3_step(sqlite3_stmt * pStmt) Line 75201 C FlylinkDC_Debug_x64.exe!sqlite3x::sqlite3_reader::read() Line 61 C++ FlylinkDC_Debug_x64.exe!sqlite3x::sqlite3_command::executenonquery() Line 121 C++ > FlylinkDC_Debug_x64.exe!CFlylinkDBManager::save_p2p_guard(const std::vector<CFlyP2PGuardIP,std::allocator<CFlyP2PGuardIP> > & p_p2p_guard_ip, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & p_manual_marker, int p_type) Line 1747 C++ FlylinkDC_Debug_x64.exe!Util::loadP2PGuard() Line 505 C++ Падений в этом месте не много - всего 4 и все под Windows 7 может выкинуть этот вызов - раз он проблемный :-) на гит-хабе нашел код https://github.com/DinrusGroup/DinrusUcrtBased/blob/5ac78908caa4536c8e3a359744b204512e80af41/Binding/ucrt_src/internal/winapi_thunks.cpp#L719 но что такое try_get_SystemFunction036 неизвестно... -- ~PPA() {} // ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 09:36 |
|
rand_s и win32 - падение базы
|
|||
---|---|---|---|
#18+
ещё актуально? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2016, 17:38 |
|
rand_s и win32 - падение базы
|
|||
---|---|---|---|
#18+
Charles Weyland, Актуально. в этом месте у меня и libtorrent падает на некоторых машинах https://github.com/arvidn/libtorrent/issues/1262 Знаете как правильнее обойти? в sqlite я просто пока убрал этот вызов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2016, 00:03 |
|
rand_s и win32 - падение базы
|
|||
---|---|---|---|
#18+
До разработчиков как то дошел этот баг. стал вливать себе версию 3.21.0 - вылез конфликт разработчики вырезали этот глючный кусок кода вообще! #if defined(_MSC_VER) && _MSC_VER>=1400 && !SQLITE_OS_WINCE rand_s((unsigned int*)zBuf); /* rand_s() is not available with MinGW */ #endif /* defined(_MSC_VER) && _MSC_VER>=1400 */ кто использует под виндой sqlite - обновляйтесь до 3.21.0! ваши программы будут меньше падать 100% ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 16:39 |
|
|
start [/forum/topic.php?fid=54&msg=39543428&tid=2008477]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 149ms |
0 / 0 |