http://bugs.winehq.org/show_bug.cgi?id=18006
Summary: Mp3tag: Crash when using Tag Sources feature Product: Wine Version: 1.1.18 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: comctl32 AssignedTo: wine-bugs@winehq.org ReportedBy: the_unknown@gmx.net
Mp3Tag v2.43 under wine 1.1.18 crashes while displaying the tracks found using the Tag Sources feature.
Steps to reproduce:
0. Download and install Mp3Tag v2.43 from http://download.mp3tag.de/mp3tagv243setup.exe 1. Open a directory with some mp3 files 2. Select one file in the file view 3. In main menu, click on "Tag Sources -> Amazon.com" 4. Enter "Avril" 5. Select album "X-Posed" 6. Click "Next" 7. The results windows pops up and Mp3Tag crashes right afterwards
Tested on Gentoo Linux with both wine from repository and the current git version built with default settings.
Quoting Mp3Tag author: http://forums.mp3tag.de/index.php?s=&showtopic=3646&view=findpost&am...
Mp3tag uses the Listview control in callback mode where items are not initialized with the actual item text but with a hint to the control that it should ask back if it wants the text for a given item/subitem combination (text set to LPSTR_TEXTCALLBACK and mask to LVIF_TEXT | LVIF_PARAM when adding items). The application then handles the LVN_GETDISPINFO message and provides the text only if necessary.
On native Windows this message is only sent, when there is at least one column to display text. This is not the case in Wine where the message is also sent for Listviews which have no columns at all. Since the album you've used for testing doesn't contain any title information on Amazon side, no column was added to the tracks list -- but Wine asked Mp3tag to display text for the item in the list.
I think it's somewhere in dlls/comctl32/listview.c at LISTVIEW_GetItemT but this is only a vague guess.
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #1 from the_unknown@gmx.net 2009-04-11 16:29:48 --- Created an attachment (id=20382) --> (http://bugs.winehq.org/attachment.cgi?id=20382) Crash log
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #2 from the_unknown@gmx.net 2009-04-11 16:31:41 --- Created an attachment (id=20383) --> (http://bugs.winehq.org/attachment.cgi?id=20383) Trace with WINEDEBUG=+listview
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #3 from Nikolay Sivov bunglehead@gmail.com 2009-04-11 16:38:23 --- (In reply to comment #0)
Mp3Tag v2.43 under wine 1.1.18 crashes while displaying the tracks found using the Tag Sources feature.
What about 1.1.19? Same crash?
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #4 from the_unknown@gmx.net 2009-04-11 17:43:49 --- (In reply to comment #3)
What about 1.1.19? Same crash?
Yes, same crash.
http://bugs.winehq.org/show_bug.cgi?id=18006
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #5 from Nikolay Sivov bunglehead@gmail.com 2009-05-23 07:49:09 --- Created an attachment (id=21259) --> (http://bugs.winehq.org/attachment.cgi?id=21259) A test shows nothing
(In reply to comment #0)
Mp3Tag v2.43 under wine 1.1.18 crashes while displaying the tracks found using the Tag Sources feature.
Steps to reproduce:
- Download and install Mp3Tag v2.43 from
http://download.mp3tag.de/mp3tagv243setup.exe
- Open a directory with some mp3 files
- Select one file in the file view
- In main menu, click on "Tag Sources -> Amazon.com"
- Enter "Avril"
- Select album "X-Posed"
- Click "Next"
- The results windows pops up and Mp3Tag crashes right afterwards
Confirming.
Quoting Mp3Tag author:
OK. I've made a small test on that which unfortunately succeeded on WinXP and Wine.
It does this following: - creates control with LVS_REPORT - no columns added - insert item with LVIF_PARAM | LVIF_TEXT (with callback placeholder) - then text is retrieved with LVM_GETITEMTEXT
After that parent window got a LVN_DISPINFO notification.
Please contact author again and get a similar list from it. I need exact steps to write test, without it it can't be solved.
http://bugs.winehq.org/show_bug.cgi?id=18006
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |bunglehead@gmail.com Ever Confirmed|0 |1
--- Comment #6 from Nikolay Sivov bunglehead@gmail.com 2009-05-23 07:50:17 --- Confirming with 1.1.22.
http://bugs.winehq.org/show_bug.cgi?id=18006
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|bunglehead@gmail.com |
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #7 from the_unknown@gmx.net 2009-06-07 07:37:52 --- (In reply to comment #5)
OK. I've made a small test on that which unfortunately succeeded on WinXP and Wine.
It does this following:
- creates control with LVS_REPORT
- no columns added
- insert item with LVIF_PARAM | LVIF_TEXT (with callback placeholder)
- then text is retrieved with LVM_GETITEMTEXT
After that parent window got a LVN_DISPINFO notification.
Please contact author again and get a similar list from it. I need exact steps to write test, without it it can't be solved.
I've contacted the author. He said that he is doing (translating from German) "in principle the same thing, but the interesting part is probably this":
On native Windows this message is only sent, when there is at least one column to display text. This is not the case in Wine where the message is also sent for Listviews which have no columns at all.
I guess the crash happens because the program relies on this behavior.
Can somebody confirm that LVN_GETDISPINFO is always sent in Wine, even for empty list views? Unfortunately I have no idea how to test it.
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #8 from Nikolay Sivov bunglehead@gmail.com 2009-06-07 09:38:48 --- (In reply to comment #7)
I've contacted the author. He said that he is doing (translating from German) "in principle the same thing, but the interesting part is probably this":
On native Windows this message is only sent, when there is at least one column to display text. This is not the case in Wine where the message is also sent for Listviews which have no columns at all.
I guess the crash happens because the program relies on this behavior.
Unfortunately this doesn't bring new information for me cause test was written exactly about it. If I understand him right we are talking about LVM_INSERTCOLUMN message which he (author) doesn't send. That's how I got a phrase: --- when there is at least one column to display text --- means "I've sent LVM_INSERTCOLUMN at least once".
If it means something else please let me know.
Can somebody confirm that LVN_GETDISPINFO is always sent in Wine, even for empty list views? Unfortunately I have no idea how to test it.
Of course not. LVN_GETDISPINFO is sent to parent when an item info is requested by control - for display or as message request (like LVM_GEITEMTEXT in attached test). So there's no reason to sent it on empty list, if only we don't check itemcount somewhere - I'll check it once more.
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #9 from the_unknown@gmx.net 2009-06-07 16:07:02 --- (In reply to comment #8)
Unfortunately this doesn't bring new information for me cause test was written exactly about it. If I understand him right we are talking about LVM_INSERTCOLUMN message which he (author) doesn't send. That's how I got a phrase:
when there is at least one column to display text
means "I've sent LVM_INSERTCOLUMN at least once".
If it means something else please let me know.
Reply from Mp3Tag author:
OK, I've installed Ubuntu with Wine 1.1.23 to try it by myself.
The error occurs because the listview gets the LVN_GETDISPINFO message after an item was added even if the listview does not contain any columns at this point (that means LVM_INSERTCOLUMN hasn't been sent). My application adds columns dynamically and uses a map from column indexes to a data structure containing the actual item texts to retrieve the texts. In this case, the map was empty (no columns) but was accessed at the 0 index in the LVN_GETDISPINFO handler (which caused the crash). This only happened under Wine because the LVN_GETDISPINFO message was not sent on native Windows.
However, I've tried to create a sample test application which shows this different behaviour. Unfortunately, I can't reproduce it, because in the LVN_GETDISPINFO message gets sent on both native Windows and Wine. So it seems that the bug was indeed with Mp3tag but only showed up when running under Wine.
Sorry for the false alarm.
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #10 from Nikolay Sivov bunglehead@gmail.com 2009-06-09 18:01:53 --- (In reply to comment #9)
Sorry for the false alarm.
False about LVN_GETDISPINFO. But it still crashes.
A question to author:
Actually log shows that one item has been added before a crash, so a dispinfo notification is reasonable.
Wrong notification sequence could cause a crash.
Please post your data allocation sequence:
At what point do you allocate buffer? On response of some list notification message or not?
To the_unknown@gmx.net:
please send this to author, if he doesn't read this bug yet.
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #11 from Nikolay Sivov bunglehead@gmail.com 2009-06-21 10:09:25 --- Strange but I can't crash it (v 2.43) anymore on 1.1.24. Could anybody retest?
http://bugs.winehq.org/show_bug.cgi?id=18006
--- Comment #12 from Alex Busenius the_unknown@gmx.net 2009-06-21 10:43:18 --- (In reply to comment #11)
Strange but I can't crash it (v 2.43) anymore on 1.1.24. Could anybody retest?
I confirm, it seems to work with 1.1.24
http://bugs.winehq.org/show_bug.cgi?id=18006
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #13 from Vitaliy Margolen vitaliy@kievinfo.com 2009-06-21 11:17:44 --- Reported fixed.
http://bugs.winehq.org/show_bug.cgi?id=18006
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #14 from Alexandre Julliard julliard@winehq.org 2009-07-03 12:24:03 --- Closing bugs fixed in 1.1.25.