New user registration is currently disabled due to spam abuse / Регистрация новых пользователей в настоящее время приостановлена из-за злоупотреблений спаммерами

Падение под Windows XP (+отладочный лог)

Сообщаем о найденных ошибках сюда

Падение под Windows XP (+отладочный лог)

Postby DVV » Mon Sep 12, 2011 7:47 am

Ниже представлена информация из gdb, соответствующая запуску отладочной версии GoldenDict (из архива GoldenDict.Debug.To.Try.rar) из-под Windows XP SP3 x86 и падению после поиска первого же слова:
Code: Select all
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from C:\Progs\Progs\GoldenDict/GoldenDict.exe...done.
(gdb) run
Starting program: C:\Progs\Progs\GoldenDict/GoldenDict.exe
[New Thread 3572.0xf30]
[New Thread 3572.0xee4]
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
QObject::connect: Connecting from COMPAT signal (QAction::activated())
[New Thread 3572.0x7b4]
Load done
[New Thread 3572.0xd2c]
getResource: gdlookup://localhost?blank=1
scheme: gdlookup
host: localhost
getResource: gdlookup://localhost?word=
scheme: gdlookup
host: localhost
In-place finish.
[New Thread 3572.0x8fc]
[New Thread 3572.0x61c]
[New Thread 3572.0x2ac]
[New Thread 3572.0x57c]
====reading 53820 bytes
getResource: gdlookup://localhost?word=transformer&group=1
scheme: gdlookup
host: localhost
alts finished
some body finished
one not finished.
offset = 3f4cdb6
====reading 51990 bytes
offset = 49e960e
warning: HEAP[GoldenDict.exe]:
warning: Invalid Address specified to RtlFreeHeap( 003E0000, 0D4826D8 )


Program received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 3572.0x57c]
0x7c90120f in ntdll!DbgUiConnectToDbg () from F:\WINDOWS\system32\ntdll.dll
(gdb) bt
#0  0x7c90120f in ntdll!DbgUiConnectToDbg ()
   from F:\WINDOWS\system32\ntdll.dll
#1  0x7c96e4b1 in ntdll!RtlpNtMakeTemporaryKey ()
   from F:\WINDOWS\system32\ntdll.dll
#2  0x7c96e8ee in ntdll!RtlpNtMakeTemporaryKey ()
   from F:\WINDOWS\system32\ntdll.dll
#3  0x7c96fad6 in ntdll!RtlpNtMakeTemporaryKey ()
   from F:\WINDOWS\system32\ntdll.dll
#4  0x7c94bb44 in ntdll!LdrFindEntryForAddress ()
   from F:\WINDOWS\system32\ntdll.dll
#5  0x003e0000 in ?? ()
#6  0x7c91b1ff in ntdll!RtlStartRXact () from F:\WINDOWS\system32\ntdll.dll
#7  0x003e0000 in ?? ()
#8  0x77c1c2de in msvcrt!free () from F:\WINDOWS\system32\msvcrt.dll
#9  0x003e0000 in ?? ()
#10 0x6e94444d in libgcc_s_dw2-1!_Unwind_DeleteException ()
   from C:\Progs\Progs\GoldenDict\libgcc_s_dw2-1.dll
#11 0x005ccc50 in __cxxabiv1::__cxa_end_catch ()
    at ../../../../gcc-4.4.0/libstdc++-v3/libsupc++/eh_catch.cc:122
#12 0x0047e6b5 in Dsl::Details::ArticleDom::ArticleDom (this=0xea3fdf8,
    str=...) at dsl_details.cc:375
#13 0x004742c9 in Dsl::(anonymous namespace)::DslDictionary::dslToHtml (
    this=0xd4a8118, str=...) at dsl.cc:671
#14 0x00478897 in Dsl::(anonymous namespace)::DslArticleRequest::run (
    this=0xd5e8978) at dsl.cc:1055
#15 0x0047856a in Dsl::(anonymous namespace)::DslArticleRequestRunnable::run (
    this=0xdb8ee80) at dsl.cc:990
#16 0x6a10cadc in QThreadPoolThread::run (this=0xd583808)
    at c:\ndk_buildrepos\qt-desktop\src\corelib\concurrent\qthreadpool.cpp:106
#17 0x6a117175 in QThreadPrivate::start (arg=0xd583808)
    at c:\ndk_buildrepos\qt-desktop\src\corelib\thread\qthread_win.cpp:315
#18 0x77c2a3b0 in msvcrt!_endthreadex () from F:\WINDOWS\system32\msvcrt.dll
#19 0x7c80b729 in KERNEL32!GetModuleFileNameA ()
   from F:\WINDOWS\system32\kernel32.dll
#20 0x00000000 in ?? ()
(gdb)


Сначала стабильно падало при первом поиске после каждого запуска (вводил команду run несколько раз в одном и том же запущенном gdb).
Сейчас перезапустил gdb, вводил разные слова минут пятнадцать - и вот результат (последние строки в консоли):
Code: Select all
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
====reading 54134 bytes
getResource: gdlookup://localhost?word=knowledge acquisition supporter&group=1
scheme: gdlookup
host: localhost
alts finished
some body finished
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one not finished.
offset = 150c308
some body finished
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
====reading 53072 bytes
getResource: gdlookup://localhost?word=knowledge base&group=1
scheme: gdlookup
host: localhost
alts finished
some body finished
one finished.
erasing..
offset = 25f7a0e
offset = 150c3be
offset = 610fde
offset = 242a214
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
In-place finish.
getResource: gdlookup://localhost?word=knowledge base computer&group=1
scheme: gdlookup
host: localhost
alts finished
some body finished
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one not finished.
offset = 150c426
getResource: gdlookup://localhost?word=knowledge base machine&group=1
scheme: gdlookup
host: localhost
alts finished
some body finished
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
offset = 150c4c6
one finished.
erasing..
erase done..
one not finished.
some body finished
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
some body finished
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
one finished.
erasing..
erase done..
====reading 53149 bytes
getResource: gdlookup://localhost?word=trust&group=1
scheme: gdlookup
host: localhost
alts finished
some body finished
one not finished.
offset = 4abe284
offset = 3fd71f8
====reading 51984 bytes
warning: HEAP[GoldenDict.exe]:
warning: Invalid Address specified to RtlFreeHeap( 003E0000, 108D5AC8 )


Program received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 2404.0x564]
0x7c90120f in ntdll!DbgUiConnectToDbg () from F:\WINDOWS\system32\ntdll.dll
(gdb) bt
#0  0x7c90120f in ntdll!DbgUiConnectToDbg ()
   from F:\WINDOWS\system32\ntdll.dll
#1  0x7c96e4b1 in ntdll!RtlpNtMakeTemporaryKey ()
   from F:\WINDOWS\system32\ntdll.dll
#2  0x7c96e8ee in ntdll!RtlpNtMakeTemporaryKey ()
   from F:\WINDOWS\system32\ntdll.dll
#3  0x7c96fad6 in ntdll!RtlpNtMakeTemporaryKey ()
   from F:\WINDOWS\system32\ntdll.dll
#4  0x7c94bb44 in ntdll!LdrFindEntryForAddress ()
   from F:\WINDOWS\system32\ntdll.dll
#5  0x003e0000 in ?? ()
#6  0x7c91b1ff in ntdll!RtlStartRXact () from F:\WINDOWS\system32\ntdll.dll
#7  0x003e0000 in ?? ()
#8  0x77c1c2de in msvcrt!free () from F:\WINDOWS\system32\msvcrt.dll
#9  0x003e0000 in ?? ()
#10 0x6e94444d in libgcc_s_dw2-1!_Unwind_DeleteException ()
   from C:\Progs\Progs\GoldenDict\libgcc_s_dw2-1.dll
#11 0x005ccc50 in __cxxabiv1::__cxa_end_catch ()
    at ../../../../gcc-4.4.0/libstdc++-v3/libsupc++/eh_catch.cc:122
#12 0x0047e6b5 in Dsl::Details::ArticleDom::ArticleDom (this=0xe83fdf8,
    str=...) at dsl_details.cc:375
#13 0x004742c9 in Dsl::(anonymous namespace)::DslDictionary::dslToHtml (
    this=0xd4acce0, str=...) at dsl.cc:671
#14 0x00478897 in Dsl::(anonymous namespace)::DslArticleRequest::run (
    this=0xd567778) at dsl.cc:1055
#15 0x0047856a in Dsl::(anonymous namespace)::DslArticleRequestRunnable::run (
    this=0xd5ea118) at dsl.cc:990
#16 0x6a10cadc in QThreadPoolThread::run (this=0xd581fb0)
    at c:\ndk_buildrepos\qt-desktop\src\corelib\concurrent\qthreadpool.cpp:106
#17 0x6a117175 in QThreadPrivate::start (arg=0xd581fb0)
    at c:\ndk_buildrepos\qt-desktop\src\corelib\thread\qthread_win.cpp:315
#18 0x77c2a3b0 in msvcrt!_endthreadex () from F:\WINDOWS\system32\msvcrt.dll
#19 0x7c80b729 in KERNEL32!GetModuleFileNameA ()
   from F:\WINDOWS\system32\kernel32.dll
#20 0x00000000 in ?? ()
(gdb)
DVV
 
Posts: 19
Joined: Wed Sep 07, 2011 9:30 am

Re: Падение под Windows XP (+отладочный лог)

Postby ikm » Mon Sep 12, 2011 7:56 am

Версия программы?
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Падение под Windows XP (+отладочный лог)

Postby DVV » Mon Sep 12, 2011 8:00 am

ikm wrote:Версия программы?

1.0.1-145-gc5693df, взята отсюда:
viewtopic.php?f=4&t=1196&p=5236&hilit=debug+version#p5235
DVV
 
Posts: 19
Joined: Wed Sep 07, 2011 9:30 am

Re: Падение под Windows XP (+отладочный лог)

Postby DVV » Fri Sep 16, 2011 11:25 am

Есть ли какой-то прогресс в обнаружении ошибки? Могу ли я чем-то помочь?
DVV
 
Posts: 19
Joined: Wed Sep 07, 2011 9:30 am

Re: Падение под Windows XP (+отладочный лог)

Postby ikm » Fri Sep 16, 2011 6:20 pm

Сколько dsl-словарей находится в активной группе в момент поиска? Если их несколько, то изменит ли что-то выключение их всех, кроме любого одного?
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Падение под Windows XP (+отладочный лог)

Postby DVV » Sat Sep 17, 2011 9:52 am

Отчитываюсь :) Обычно использую группу "en", в которой 16 словарей. Физически файлы этих словарей находятся в следующих подпапках: "en-en" (2 словаря), "en-ru" (6 словарей), "la-ru" (2), "ru-en" (6). Описанные выше логи были получены при работе со всей группой "en" с поиском английский и русских слов вперемешку (просто для протокола: в самом первом случае, когда программа падала на первом же поиске, искалось английское слово).
Сегодня попробовал оставить активным только один русско-английский словарь. То есть все остальные словари группы "en" я деактивировал (отжал их кнопки на панели словарей). Набил порядка сотни разных русских слов (с показом английского перевода), и ничего не упало.
После этого активировал все словари группы "en" (вжал все кнопки на панели словарей) и продолжил набивать русские слова. Где-то через пол-сотни слов программа упала с той же ошибкой, что в приведенных выше логах.
Надо думать, проблема связана с использованием нескольких словарей.
Все словари в формате .dsl.dz (только в другой группе - "es" - присутствуют .dict.dz)
DVV
 
Posts: 19
Joined: Wed Sep 07, 2011 9:30 am

Re: Падение под Windows XP (+отладочный лог)

Postby Abs62 » Sat Sep 17, 2011 10:16 am

Надо думать, проблема связана с использованием нескольких словарей.

Думаю, проблема связана в первую очередь с нарушением межпотоковой синхронизации. А количество словарей влияет на вероятность падения. Больше словарей - больше потоков, больше шансов нарваться на глюк.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Падение под Windows XP (+отладочный лог)

Postby ikm » Sat Sep 17, 2011 10:03 pm

Похоже, что это опять mingw чудит с параллельной обработкой исключений в разных потоках. Интересно, какой версией Qt SDK была собрана версия GD, которая дает эту ошибку?
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Падение под Windows XP (+отладочный лог)

Postby Tvangeste » Sun Sep 18, 2011 11:19 am

Если это я собирал, то вот:

Code: Select all
g++ -v
Using built-in specs.
Target: mingw32
Configured with: ../gcc-4.4.0/configure --enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --disable-sjlj-exceptions --enable-shared --enable-libgcj --enable-libgomp --with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --prefix=/mingw --with-gmp=/mingw/src/gmp/root --with-mpfr=/mingw/src/mpfr/root --build=mingw32
Thread model: win32
gcc version 4.4.0 (GCC)
Tvangeste
 
Posts: 893
Joined: Thu Jun 02, 2011 11:42 am

Re: Падение под Windows XP (+отладочный лог)

Postby ikm » Mon Sep 19, 2011 12:40 am

В общем, не нравится мне всё это. Надо другой тулчейн использовать - либо более новый, либо более старый. Всё они никак нормально исключения не наладят. В прошлые разы проблема была в первоначальной инициализации этого механизма (и она была обойдена в коде GD). Теперь вот опять что-то сломано.

Когда я в прошлый раз репортил баг про первоначальную инициализацию исключений в багтрекер Qt, мне написали, что это не их проблемы, а проблемы mingw. Вообще они, похоже, просто не глядя берут последнюю версию mingw для каждого из релизов SDK и почему-то считают, что баги в mingw никакого отношения к пользователям SDK не имеют.
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Next

Return to Ошибки

Who is online

Users browsing this forum: No registered users and 19 guests