Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Qt 4.5.0, аварийное завершение qhelpconverter.exe
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt инструментарий
Litkevich Yuriy
Библиотека собрана, как описано здесь
При запуске преобразователя формата справки (qhelpconverter.exe), происходит ошибка "Память не может быть read..."
попробовал индивидуально пересобрать его в и отладочном и в релизном варианте одно и тоже.

Может кто-нибудь проверить у себя как работает этот инструмент?
void*
все вроде нормально пашет, Qt SDK 2009.01, Qt 4.4.0
Litkevich Yuriy
Цитата(void* @ 16.3.2009, 18:49) *
Qt 4.4.0
это не то, в 4.4.3 у меня тоже все путем
SABROG
Проверил на 4.5, тоже сам собирал. Win2k, взял файлик /doc/html/qt.dcf и без проблем сконвертил его в qt.qhp
Вроде все ок.
Litkevich Yuriy
хм, может это у меня после поломки винта, хотя на том винте никаких зависимостей нет, только дистрибы да скачанные архивы исходников.

как бы проверить, что ему нужно
Litkevich Yuriy
сообщение которое выдается почему-то содержит нулевые адреса:

может это кого-то натолкнет на мысль
ViGOur
По всей видимости где-то у тебя идет обращение к null указателю, что-то вроде:
char *lp = 0;
strcpy( lp, "тестовая строка");
SABROG
Загляни в стек вызовов через gdb или ollydbg. Сразу станет понятно откуда ноги растут.

ViGOur, только у него при этом адрес strcpy никак нулевым не будет. Возможно стек где-то рушится.
Litkevich Yuriy
Цитата(SABROG @ 16.3.2009, 23:12) *
Загляни в стек вызовов через gdb
да я пробывал с помощью QDevelop отладчик запустить, но у этого gdb на все один ответ - "segmantation fault".
SABROG
Ну, а ты в стек при этом смотри, а не то, что он пишет :)
BRE
Цитата(Litkevich Yuriy @ 16.3.2009, 22:33) *
Цитата(SABROG @ 16.3.2009, 23:12) *
Загляни в стек вызовов через gdb
да я пробывал с помощью QDevelop отладчик запустить, но у этого gdb на все один ответ - "segmantation fault".

Yuriy, попробуй так:
gdb qhelpconverter ........
gdb> run
... программа упадет
gdb> backtrace
Litkevich Yuriy
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? () from
(gdb) backtrace
#0  0x00000000 in ?? () from
#1  0x656fce2a in ZN12QPrintDialog4execEv ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#2  0x6517395d in ZN7QWidget5eventEP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#3  0x65596df7 in ZN15QAbstractButton5eventEP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#4  0x6510ba9c in ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#5  0x6510d2f8 in ZN12QApplication6notifyEP7QObjectP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#6  0x6a32707a in ZN16QCoreApplication14notifyInternalEP7QObjectP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtCore4.dll
#7  0x6516c2bf in ZN14QWidgetPrivate10drawWidgetEP12QPaintDeviceRK7QRegionRK6QPointiP8QPainterP19Q
WidgetBackingStore () from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#8  0x6516ca73 in ZN14QWidgetPrivate22paintSiblingsRecursiveEP12QPaintDeviceRK5QListIP7QObjectEiRK
7QRegionRK6QPointiP8QPainterP19QWidgetBackingStore ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#9  0x6516c0ba in ZN14QWidgetPrivate10drawWidgetEP12QPaintDeviceRK7QRegionRK6QPointiP8QPainterP19Q
WidgetBackingStore () from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#10 0x65350ae7 in ZN14QWidgetPrivate29invalidateBuffer_resizeHelperERK6QPointRK5QSize () from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#11 0x65158f29 in ZN14QWidgetPrivate16syncBackingStoreEv ()
---Type <return> to continue, or q <return> to quit---
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#12 0x65174225 in ZN7QWidget5eventEP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#13 0x65768eb2 in ZN7QWizard5eventEP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#14 0x6510ba9c in ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#15 0x6510d2f8 in ZN12QApplication6notifyEP7QObjectP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#16 0x6a32707a in ZN16QCoreApplication14notifyInternalEP7QObjectP6QEvent ()
   from H:\Qt\4.5.0_shared\bin\QtCore4.dll
#17 0x6a32c5d7 in ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData () from H:\Qt\4.5.0_shared\bin\QtCore4.dll
#18 0x6a35a6f5 in ZN21QEventDispatcherWin3213processEventsE6QFlagsIN10QEventLoop17ProcessEventsFla
gEE () from H:\Qt\4.5.0_shared\bin\QtCore4.dll
#19 0x65189d80 in Z25qWinProcessConfigRequestsv ()
   from H:\Qt\4.5.0_shared\bin\QtGui4.dll
#20 0x6a326998 in ZN10QEventLoop13processEventsE6QFlagsINS_17ProcessEventsFlagEE () from H:\Qt\4.5.0_shared\bin\QtCore4.dll
#21 0x6a326ba1 in ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE ()
   from H:\Qt\4.5.0_shared\bin\QtCore4.dll
#22 0x6a32c7af in ZN16QCoreApplication4execEv ()
   from H:\Qt\4.5.0_shared\bin\QtCore4.dll
---Type <return> to continue, or q <return> to quit---
#23 0x00418111 in ?? ()
#24 0x0022fdb0 in ?? ()
#25 0x00000001 in ?? ()
#26 0x003f41c8 in ?? ()
#27 0x00040500 in ?? ()
#28 0x003f4f01 in ?? ()
#29 0x0022fd34 in ?? ()
#30 0x0022fc80 in ?? ()
#31 0x003f4e48 in ?? ()
#32 0x0022fd48 in ?? ()
#33 0x77f98191 in ?? ()
#34 0x77f89650 in ?? ()
#35 0xffffffff in ?? ()
#36 0x0022fd58 in ?? ()
#37 0x78001e00 in free () from E:\WINNT\system32\msvcrt.dll
#38 0x00419a21 in ?? ()
#39 0x00000001 in ?? ()
#40 0x003f41c8 in ?? ()
#41 0x003f4f00 in ?? ()
#42 0x0000000a in ?? ()
#43 0x0022fe68 in ?? ()
#44 0x0022fea0 in ?? ()
#45 0x003f0000 in ?? ()
---Type <return> to continue, or q <return> to quit---
дальше тыкать ентер или нет?
:)
BRE
Цитата(Litkevich Yuriy @ 16.3.2009, 23:17) *
дальше тыкать ентер или нет?
:)

Yuriy, а программа падает сразу после запуска или успевает визард показать?

Сильно меня смущает эта строка:
Цитата
#1 0x656fce2a in ZN12QPrintDialog4execEv ()
from H:\Qt\4.5.0_shared\bin\QtGui4.dll

Попробовал у себя, конвертер работает, но QPrintDialog::exec() нигде не вызывается. :)
SABROG
В qwidget.cpp рекурсия идет

void QWidgetPrivate::paintSiblingsRecursive(QPaintDevice *pdev, const QObjectList& siblings, int index, const QRegion &rgn,
                                            const QPoint &offset, int flags
#ifdef Q_BACKINGSTORE_SUBSURFACES
                                            , const QWindowSurface *currentSurface
#endif
                                            , QPainter *sharedPainter, QWidgetBackingStore *backingStore)


Видимо в какой-то момент, по не понятным причинам, стек заканчивается.
Litkevich Yuriy
вот на тыкал энетер до сообщения:
#44 0x0022fea0 in ?? ()
#45 0x003f0000 in ?? ()
---Type <return> to continue, or q <return> to quit---
#46 0x003f23c8 in ?? ()
#47 0x0022fe64 in ?? ()
#48 0x77fb6bd9 in ?? ()
#49 0x00000008 in ?? ()
#50 0x003f23d0 in ?? ()
#51 0x003f0000 in ?? ()
#52 0x0022feb8 in ?? ()
#53 0x00000001 in ?? ()
#54 0x00000000 in ?? () from
#55 0x00000001 in ?? ()
#56 0x77fb6498 in ?? ()
#57 0x00000000 in ?? () from
#58 0x00000000 in ?? () from
#59 0x00000000 in ?? () from
#60 0x0041b360 in ?? ()
#61 0x004283b8 in ?? ()
#62 0x0022fee0 in ?? ()
#63 0x00419a90 in ?? ()
#64 0x0022fe30 in ?? ()
#65 0x003f23c8 in ?? ()
#66 0x00000080 in ?? ()
#67 0x003f41b8 in ?? ()
#68 0x003f0000 in ?? ()
---Type <return> to continue, or q <return> to quit---
#69 0x0022ff10 in ?? ()
#70 0x77f8c277 in ?? ()
#71 0x003f41b8 in ?? ()
#72 0x793b4b15 in KERNEL32!GetStartupInfoA ()
   from E:\WINNT\system32\kernel32.dll
#73 0x00419608 in ?? ()
#74 0x00400000 in ?? ()
#75 0x00000000 in ?? () from
#76 0x00233562 in ?? ()
#77 0x0000000a in ?? ()
#78 0x0022ff50 in ?? ()
#79 0x7800bd6a in abnormal_termination () from E:\WINNT\system32\msvcrt.dll
#80 0x78033da0 in modf ()
#81 0x0040124b in ?? ()
#82 0x00000001 in ?? ()
#83 0x003f4110 in ?? ()
#84 0x003f2c08 in ?? ()
#85 0x00430000 in ?? ()
#86 0x0022ffa4 in ?? ()
#87 0xffffffff in ?? ()
#88 0x0022ffa8 in ?? ()
#89 0x00000000 in ?? () from
#90 0x00000000 in ?? () from
---Type <return> to continue, or q <return> to quit---
#91 0x003f2c08 in ?? ()
#92 0x00000000 in ?? () from
#93 0x7ffdf000 in ?? ()
#94 0x0022ffc0 in ?? ()
#95 0x004012b8 in ?? ()
#96 0x00000002 in ?? ()
#97 0x00000009 in ?? ()
#98 0x0022fff0 in ?? ()
#99 0x793a87f5 in KERNEL32!DosDateTimeToFileTime ()
   from E:\WINNT\system32\kernel32.dll
Previous frame inner to this frame (corrupt stack?)
(gdb)

Цитата(BRE @ 17.3.2009, 2:42) *
программа падает сразу после запуска или успевает визард показать?
только декорация (обрамление с иконкой и кнопками "X" и "?") появляется, а внутри, то что за окно находилось, больше окно ни начто не реагирует, только закрыв консоль с gdb можно от него избавиться
SABROG
Попробуй в винде отрубить всякие рюшечки, темы, может акселерацию поменьше сделать, поиграйся с глубиной цвета. Возможно что-то производит лишние события и Qt захлебывается в event'aх.
Litkevich Yuriy
Цитата(SABROG @ 17.3.2009, 3:15) *
отрубить всякие рюшечки,
у меня их просто нет :)
SABROG
Цитата(Litkevich Yuriy @ 17.3.2009, 0:16) *
Цитата(SABROG @ 17.3.2009, 3:15) *
отрубить всякие рюшечки,
у меня их просто нет :)

На win2k козлит? Qt на ней собирал или перенес?
Litkevich Yuriy
Цитата(SABROG @ 17.3.2009, 3:20) *
На win2k козлит? Qt на ней собирал
именно на ней.

сегодня посвторил туже процедуру сборки для 4.4.3, только примеры не собирал, а демки собрал. Конвертер запускается без проблем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.