Демо-сервер. На реале всё устроено иначе, чтоб не заморачиваться с "готовностью данных".
При начале новой сессии виснет гарантировано (т.е. когда с утра переподключатеся). Иногда и при обычной работе. В консоль выдаёт кучу
Код |
---|
err:ntdll:RtlpWaitForCriticalSection section 0x31213f0 "?" wait timed out in thread 0009, blocked by 0000, retrying (60 sec) |
Заблокироваться пытаемся в потоке 9, в рамках которого только что успешно отработал "OnInit" луа-скрипта, судя по логам. А кто держит секцию? Никто - "blocked by 0000"
Стек (ну а вдруг):
Код |
---|
$ winedbg 8
WineDbg starting on pid 0008
0xf7768a12 GLIBC_2+0xa12 in ld-linux.so.2: ret
Wine-dbg>bt
Backtrace:
=>0 0xf7768a12 GLIBC_2+0xa12() in ld-linux.so.2 (0x00000000)
1 0xf74943d7 syscall+0x26() in libc.so.6 (0x00000000)
2 0x7bc3c574 RtlpWaitForCriticalSection+0xe3() in ntdll (0x00e6e558)
3 0x7bc3cfa8 RtlEnterCriticalSection+0x4f() in ntdll (0x00e6e598)
4 0x0304e894 in qlua (+0x3e893) (0x00e6e5bc)
5 0x0304f500 in qlua (+0x3f4ff) (0x00e6e5f4)
6 0x0303eecc in qlua (+0x2eecb) (0x00e6e644)
7 0x03080e40 in qlua (+0x70e3f) (0x00e6e65c)
8 0x00812d79 in info (+0x412d78) (0x00e6e690)
9 0x00812ed6 in info (+0x412ed5) (0x00e6e6c8)
10 0x005e6c90 in info (+0x1e6c8f) (0x00e6e6ec)
11 0x005e6e9b in info (+0x1e6e9a) (0x00e6e76c) |
Далее, если посмотреть объект по адресу 0x31213f0, то можно увидеть, что там расположена критическая секция с такими полями:
Код |
---|
PRTL_CRITICAL_SECTION_DEBUG DebugInfo = 0x25dc6a0;
LONG LockCount = -1;
LONG RecursionCount = 0;
HANDLE OwningThread = 0;
HANDLE LockSemaphore = 0;
ULONG_PTR SpinCount = 0; |
Которая выглядит как будто её никто и не блокировал. Или же повторно инициализировал, или же убить успел.
Возможно, это глюк вайна, но если вдруг фреймы 4-7 что-то говорят и есть желание воткнуть там отладочную информацию, могу попробовать погонять с дебажной qlua.dll.