[Psi-Devel] debugging on windows

Norman Rasmussen norman at rasmussen.co.za
Thu Mar 13 14:00:31 PDT 2008


>From the Qt 4.3.3 changelog:

- QPixmapCache
    * [182363] Fixed a crash that could occur when inserting a null pixmap.

I have Qt 4.3.3 and 4.3.4 builds made with VS 2008, but unfortunately they
don't seem to work correctly.  So I'll either have to rebuild them with VS
2005, or figure out why they're not happy.  (It might just be runtime
mismatches - because I'm using the VS2005 open ssl libs, and qca libs, but
the vc++ runtime is not loading correctly)

On Thu, Mar 13, 2008 at 10:42 PM, Norman Rasmussen <norman at rasmussen.co.za>
wrote:

> From the looks of the stack trace plus some blind debugging, it looks like
> Psi crashed when you resized a window.
>
> It was trying to draw a PE_IndicatorArrowUp of size 0, so it looks like no
> image was created, so when that image was cached in the QPixmapCache, it
> didn't like storing it as a QDetachedPixmap, because the QDetachedPixmap
> requires that the image really exists.
>
> *whew* That being said, are you using a custom theme that might be causing
> issues? and is this easy to reproduce by resizing any window, any amount, or
> do you really have to go all out to make it crash?
>
> btw, Here's the stack trace from that dump:
>
> >    QtGuid4.dll!QDetachedPixmap::QDetachedPixmap(const QPixmap &
> pix={...})  Line 94 + 0x9 bytes    C++
>      QtGuid4.dll!QPMCache::insert(const QString & key={...}, const QPixmap
> & pixmap={...}, int cost=0x00000000)  Line 177 + 0x26 bytes    C++
>      QtGuid4.dll!QPixmapCache::insert(const QString & key={...}, const
> QPixmap & pm={...})  Line 277    C++
>      QtGuid4.dll!QWindowsStyle::drawPrimitive(QStyle::PrimitiveElement
> pe=PE_IndicatorArrowUp, const QStyleOption * opt=0x00123714, QPainter *
> p=0x00126170, const QWidget * w=0x00f748d0)  Line 1340 + 0x13 bytes    C++
>      QtGuid4.dll!QWindowsXPStyle::drawPrimitive(QStyle::PrimitiveElement
> pe=PE_IndicatorArrowUp, const QStyleOption * option=0x00123714, QPainter *
> p=0x00126170, const QWidget * widget=0x00f748d0)  Line 1225    C++
>      QtGuid4.dll!QWindowsStyle::drawControl(QStyle::ControlElement
> ce=CE_ScrollBarSubLine, const QStyleOption * opt=0x00124ce8, QPainter *
> p=0x00126170, const QWidget * widget=0x00f748d0)  Line 2160    C++
>      QtGuid4.dll!QWindowsXPStyle::drawControl(QStyle::ControlElement
> element=CE_ScrollBarSubLine, const QStyleOption * option=0x00124ce8,
> QPainter * p=0x00126170, const QWidget * widget=0x00f748d0)  Line 1799
> C++
>      QtGuid4.dll!QCommonStyle::drawComplexControl(QStyle::ComplexControl
> cc=CC_ScrollBar, const QStyleOptionComplex * opt=0x001260fc, QPainter *
> p=0x00126170, const QWidget * widget=0x00f748d0)  Line 2471    C++
>      QtGuid4.dll!QWindowsStyle::drawComplexControl(QStyle::ComplexControl
> cc=CC_ScrollBar, const QStyleOptionComplex * opt=0x001260fc, QPainter *
> p=0x00126170, const QWidget * widget=0x00f748d0)  Line 3069    C++
>      QtGuid4.dll!QWindowsXPStyle::drawComplexControl(QStyle::ComplexControl
> cc=CC_ScrollBar, const QStyleOptionComplex * option=0x001260fc, QPainter *
> p=0x00126170, const QWidget * widget=0x00f748d0)  Line 2367    C++
>      QtGuid4.dll!QScrollBar::paintEvent(QPaintEvent *
> __formal=0x00126780)  Line 521    C++
>      QtGuid4.dll!QWidget::event(QEvent * event=0x00126780)  Line 6262
> C++
>      QtGuid4.dll!QAbstractSlider::event(QEvent * e=0x00126780)  Line
> 835    C++
>      QtGuid4.dll!QScrollBar::event(QEvent * event=0x00126780)  Line 501
> C++
>      QtGuid4.dll!QApplicationPrivate::notify_helper(QObject *
> receiver=0x00f748d0, QEvent * e=0x00126780)  Line 3558 + 0x11 bytes    C++
>      QtGuid4.dll!QApplication::notify(QObject * receiver=0x00f748d0,
> QEvent * e=0x00126780)  Line 3499 + 0x10 bytes    C++
>      Psi.exe!PsiApplication::notify(QObject * receiver=0x00f748d0, QEvent
> * event=0x00126780)  Line 251    C++
>      QtCored4.dll!QCoreApplication::notifyInternal(QObject *
> receiver=0x00f748d0, QEvent * event=0x00126780)  Line 533    C++
>      QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject *
> receiver=0x00f748d0, QEvent * event=0x00126780)  Line 205 + 0x38 bytes
> C++
>      QtGuid4.dll!qt_sendSpontaneousEvent(QObject * receiver=0x00f748d0,
> QEvent * event=0x00126780)  Line 1199 + 0xe bytes    C++
>      QtGuid4.dll!QWidgetPrivate::drawWidget(QPaintDevice *
> pdev=0x01472118, const QRegion & rgn={...}, const QPoint & offset={...}, int
> flags=0x00000004)  Line 1212 + 0xd bytes    C++
>      QtGuid4.dll!QWidgetBackingStore::paintSiblingsRecursive(QPaintDevice
> * pdev=0x01472118, const QList<QObject *> & siblings={...}, int
> index=0x00000000, const QRegion & rgn={...}, const QPoint & offset={...},
> int flags=0x00000004)  Line 1116    C++
>      QtGuid4.dll!QWidgetPrivate::drawWidget(QPaintDevice *
> pdev=0x01472118, const QRegion & rgn={...}, const QPoint & offset={...}, int
> flags=0x00000004)  Line 1248 + 0x2e bytes    C++
>      QtGuid4.dll!QWidgetBackingStore::paintSiblingsRecursive(QPaintDevice
> * pdev=0x01472118, const QList<QObject *> & siblings={...}, int
> index=0x00000003, const QRegion & rgn={...}, const QPoint & offset={...},
> int flags=0x00000004)  Line 1116    C++
>      QtGuid4.dll!QWidgetPrivate::drawWidget(QPaintDevice *
> pdev=0x01472118, const QRegion & rgn={...}, const QPoint & offset={...}, int
> flags=0x00000004)  Line 1248 + 0x2e bytes    C++
>      QtGuid4.dll!QWidgetBackingStore::paintSiblingsRecursive(QPaintDevice
> * pdev=0x01472118, const QList<QObject *> & siblings={...}, int
> index=0x00000001, const QRegion & rgn={...}, const QPoint & offset={...},
> int flags=0x00000004)  Line 1116    C++
>      QtGuid4.dll!QWidgetPrivate::drawWidget(QPaintDevice *
> pdev=0x01472118, const QRegion & rgn={...}, const QPoint & offset={...}, int
> flags=0x00000004)  Line 1248 + 0x2e bytes    C++
>      QtGuid4.dll!QWidgetBackingStore::paintSiblingsRecursive(QPaintDevice
> * pdev=0x01472118, const QList<QObject *> & siblings={...}, int
> index=0x00000002, const QRegion & rgn={...}, const QPoint & offset={...},
> int flags=0x00000004)  Line 1116    C++
>      QtGuid4.dll!QWidgetPrivate::drawWidget(QPaintDevice *
> pdev=0x01472118, const QRegion & rgn={...}, const QPoint & offset={...}, int
> flags=0x00000004)  Line 1248 + 0x2e bytes    C++
>      QtGuid4.dll!QWidgetBackingStore::paintSiblingsRecursive(QPaintDevice
> * pdev=0x01472118, const QList<QObject *> & siblings={...}, int
> index=0x00000003, const QRegion & rgn={...}, const QPoint & offset={...},
> int flags=0x00000004)  Line 1116    C++
>      QtGuid4.dll!QWidgetPrivate::drawWidget(QPaintDevice *
> pdev=0x01472118, const QRegion & rgn={...}, const QPoint & offset={...}, int
> flags=0x00000004)  Line 1248 + 0x2e bytes    C++
>      QtGuid4.dll!QWidgetBackingStore::paintSiblingsRecursive(QPaintDevice
> * pdev=0x01472118, const QList<QObject *> & siblings={...}, int
> index=0x00000003, const QRegion & rgn={...}, const QPoint & offset={...},
> int flags=0x00000004)  Line 1116    C++
>      QtGuid4.dll!QWidgetPrivate::drawWidget(QPaintDevice *
> pdev=0x01472118, const QRegion & rgn={...}, const QPoint & offset={...}, int
> flags=0x00000005)  Line 1248 + 0x2e bytes    C++
>      QtGuid4.dll!QWidgetBackingStore::cleanRegion(const QRegion &
> rgn={...}, QWidget * widget=0x0145d6d0, bool recursiveCopyToScreen=true)
> Line 1017    C++
>      QtGuid4.dll!qt_syncBackingStore(QRegion rgn={...}, QWidget *
> widget=0x0145d6d0, bool recursive=false)  Line 247    C++
>      QtGuid4.dll!qt_syncBackingStore(QRegion rgn={...}, QWidget *
> widget=0x0145d6d0)  Line 253 + 0x1d bytes    C++
>      QtGuid4.dll!QETWidget::translateConfigEvent(const tagMSG &
> msg={...})  Line 3175 + 0x3e bytes    C++
>      QtGuid4.dll!QtWndProc(HWND__ * hwnd=0x00080246, unsigned int
> message=0x00000005, unsigned int wParam=0x00000000, long lParam=0x0091008a)
> Line 1702 + 0xc bytes    C++
>      user32.dll!_InternalCallWinProc at 20()  + 0x28 bytes
>      user32.dll!_UserCallWinProcCheckWow at 32()  + 0xb7 bytes
>      user32.dll!_RealDefWindowProcWorker at 20()  + 0x1f68 bytes
>      user32.dll!_RealDefWindowProcW at 16()  + 0x27 bytes
>      user32.dll!_DefWindowProcW at 16()  + 0x57 bytes
>      QtGuid4.dll!QWinInputContext::DefWindowProcW(HWND__ *
> hwnd=0x00080246, unsigned int msg=0x00000047, unsigned int
> wParam=0x00000000, long lParam=0x0012aa1c)  Line 395 + 0x22 bytes    C++
>      QtGuid4.dll!QtWndProc(HWND__ * hwnd=0x00080246, unsigned int
> message=0x00000047, unsigned int wParam=0x00000000, long lParam=0x0012aa1c)
> Line 2162 + 0x1c bytes    C++
>      user32.dll!_InternalCallWinProc at 20()  + 0x28 bytes
>      user32.dll!_UserCallWinProcCheckWow at 32()  + 0xb7 bytes
>      user32.dll!_DispatchClientMessage at 20()  + 0x4d bytes
>      user32.dll!___fnINLPWINDOWPOS at 4()  + 0x25 bytes
>      ntdll.dll!_KiUserCallbackDispatcher at 12()  + 0x13 bytes
>      user32.dll!_NtUserMessageCall at 28()  + 0xc bytes
>      user32.dll!_RealDefWindowProcW at 16()  + 0x27 bytes
>      user32.dll!_DefWindowProcW at 16()  + 0x57 bytes
>      QtGuid4.dll!QWinInputContext::DefWindowProcW(HWND__ *
> hwnd=0x00080246, unsigned int msg=0x00000112, unsigned int
> wParam=0x0000f008, long lParam=0x00a5007d)  Line 395 + 0x22 bytes    C++
>      QtGuid4.dll!QtWndProc(HWND__ * hwnd=0x00080246, unsigned int
> message=0x00000112, unsigned int wParam=0x0000f008, long lParam=0x00a5007d)
> Line 2162 + 0x1c bytes    C++
>      user32.dll!_InternalCallWinProc at 20()  + 0x28 bytes
>      user32.dll!_UserCallWinProcCheckWow at 32()  + 0xb7 bytes
>      user32.dll!_DispatchClientMessage at 20()  + 0x4d bytes
>      user32.dll!___fnDWORD at 4()  + 0x24 bytes
>      ntdll.dll!_KiUserCallbackDispatcher at 12()  + 0x13 bytes
>      user32.dll!_NtUserMessageCall at 28()  + 0xc bytes
>      user32.dll!_RealDefWindowProcW at 16()  + 0x27 bytes
>      user32.dll!_DefWindowProcW at 16()  + 0x57 bytes
>      QtGuid4.dll!QWinInputContext::DefWindowProcW(HWND__ *
> hwnd=0x00080246, unsigned int msg=0x000000a1, unsigned int
> wParam=0x00000011, long lParam=0x00a5007d)  Line 395 + 0x22 bytes    C++
>      QtGuid4.dll!QtWndProc(HWND__ * hwnd=0x00080246, unsigned int
> message=0x000000a1, unsigned int wParam=0x00000011, long lParam=0x00a5007d)
> Line 2162 + 0x1c bytes    C++
>      user32.dll!_InternalCallWinProc at 20()  + 0x28 bytes
>      user32.dll!_UserCallWinProcCheckWow at 32()  + 0xb7 bytes
>      user32.dll!_DispatchMessageWorker at 8()  + 0xdc bytes
>      user32.dll!_DispatchMessageW at 4()  + 0xf bytes
>      QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum
> QEventLoop::ProcessEventsFlag> flags={...})  Line 521 + 0x18 bytes    C++
>      QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum
> QEventLoop::ProcessEventsFlag> flags={...})  Line 992 + 0x15 bytes    C++
>      QtCored4.dll!QEventLoop::processEvents(QFlags<enum
> QEventLoop::ProcessEventsFlag> flags={...})  Line 143    C++
>      QtCored4.dll!QEventLoop::exec(QFlags<enum
> QEventLoop::ProcessEventsFlag> flags={...})  Line 188 + 0x2d bytes    C++
>      QtCored4.dll!QCoreApplication::exec()  Line 761 + 0x15 bytes    C++
>      QtGuid4.dll!QApplication::exec()  Line 3056    C++
>      Psi.exe!main(int argc=0x00000001, char * * argv=0x003f5cb0)  Line 356
> + 0x6 bytes    C++
>      Psi.exe!WinMain(HINSTANCE__ * instance=0x00400000, HINSTANCE__ *
> prevInstance=0x00000000, char * __formal=0x00152363, int
> cmdShow=0x00000001)  Line 120 + 0x12 bytes    C++
>      Psi.exe!__tmainCRTStartup()  Line 589 + 0x35 bytes    C
>      Psi.exe!WinMainCRTStartup()  Line 414    C
>      kernel32.dll!_BaseProcessStart at 4()  + 0x23 bytes
>
>
> On Thu, Mar 13, 2008 at 9:55 PM, Andrey Rahmatullin <wrar at altlinux.ru>
> wrote:
>
> > On Thu, Mar 13, 2008 at 09:21:50PM +0200, Norman Rasmussen wrote:
> > > In particular the section on 'Using Dr. Watson'.  To be able to
> > reproduce
> > > the stack trace with useful information I will need the minidump file
> > (.dmp)
> > > that Dr Watson creates.
> > Attached.
> >
> > > Also let me know which build you generated the dumps with as I will
> > have to
> > > have the exact pdb files installed so that Visual Studio picks them up
> > > correctly. (If it's not listed on my web-site then the pdb files are
> > already
> > > deleted)
> > psi-trunk-0.12-rc1-win32.zip
> >
> > --
> > WBR, wRAR (ALT Linux Team)
> >
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.4.8 (GNU/Linux)
> >
> > iEYEARECAAYFAkfZhpYACgkQB4Vf7hFmt5X9NwCZAQrF/hxAiDnWzQaf3g4ckZph
> > QscAn2g5H3yfnpvJxTqD8LRsLcB5PKF7
> > =9z+y
> > -----END PGP SIGNATURE-----
> >
> > _______________________________________________
> > Psi-Devel mailing list
> > Psi-Devel at lists.affinix.com
> > http://lists.affinix.com/listinfo.cgi/psi-devel-affinix.com
> >
> >
>
>
> --
> - Norman Rasmussen
> - Email: norman at rasmussen.co.za
> - Home page: http://norman.rasmussen.co.za/
>



-- 
- Norman Rasmussen
- Email: norman at rasmussen.co.za
- Home page: http://norman.rasmussen.co.za/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.affinix.com/pipermail/psi-devel-affinix.com/attachments/20080313/ddbb1f92/attachment.html 


More information about the Psi-Devel mailing list