http://bugs.winehq.org/show_bug.cgi?id=8421
------- Additional Comments From focht@gmx.net 2007-17-05 13:24 ------- Hello,
very nice app .. good to manage all kinds of collections *g*
For the crash ... i'm pretty sure it's a listview bug though i couldnt pin down the exact cause yet. Run with WINEDEBUG=+listview and click one of the treeview nodes in left pane (below root node). In Windows the listview is rebuilt with new items (depending on context). In Wine you can see the first row headers flashing before it crashes in notify_dispinfoT() callback (dlls/comctl32/listview.c). The client (app) accesses garbage data at that point (listview items empty)
For testing purposes i added exception handler to guard callback:
--- snip dlls/comctl32/listview.c --- static BOOL notify_dispinfoT(const LISTVIEW_INFO *infoPtr, INT notificationCode, LPNMLVDISPINFOW pdi, BOOL isW) { ... if (infoPtr->notifyFormat == NFR_ANSI) realNotifCode = get_ansi_notification(notificationCode); else realNotifCode = notificationCode; TRACE(" pdi->item=%s\n", debuglvitem_t(&pdi->item, infoPtr->notifyFormat != NFR_ANSI));
__TRY { bResult = notify_hdr(infoPtr, realNotifCode, &pdi->hdr); } __EXCEPT_PAGE_FAULT { DWORD dwExceptionCode = GetExceptionCode(); ERR("notify_hdr call failed with exception 0x%08x (%d)\n", dwExceptionCode, dwExceptionCode); } __ENDTRY ...
} --- snip dlls/comctl32/listview.c ---
The interesting thing is: with that callback guard, exceptions get thrown but later the listview gets properly rebuilt and displayed (like windows, after "second wave" of notifications).
Should be enough information for listview maintainer to hunt this thing down.
Regards