http://bugs.winehq.org/show_bug.cgi?id=9575
Summary: IBExpert need windows native ole32.dll to run Product: Wine Version: 0.9.44. Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-ole AssignedTo: wine-bugs@winehq.org ReportedBy: c_pradelli@yahoo.com
To run ibexpert ole32.dll needs to be overriden (or dcom98 installed). I can't detect why, there are no fixme printed on screen. The application raise an access violation when starts and then you can't close it.
The application is in AppDB http://appdb.winehq.org/appview.php?iVersionId=9049
http://bugs.winehq.org/show_bug.cgi?id=9575
Rob Shearman rob@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |rob@codeweavers.com
--- Comment #1 from Rob Shearman rob@codeweavers.com 2007-11-13 04:23:03 --- Please attach a +ole log of the crash.
http://bugs.winehq.org/show_bug.cgi?id=9575
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |ABANDONED
--- Comment #2 from Austin English austinenglish@gmail.com 2008-06-03 15:36:49 --- Abandoned.
http://bugs.winehq.org/show_bug.cgi?id=9575
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #3 from Austin English austinenglish@gmail.com 2008-06-03 15:42:03 --- Closing.
http://bugs.winehq.org/show_bug.cgi?id=9575
Christian c_pradelli@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|CLOSED |UNCONFIRMED Resolution|ABANDONED |
--- Comment #4 from Christian c_pradelli@yahoo.com 2009-01-19 12:04:55 --- I'm back again with this issue (sorry for abandon it).
I need some help, how can I make the +ole log of the crash that you asked me?
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #5 from Austin English austinenglish@gmail.com 2009-01-19 13:32:29 --- (In reply to comment #4)
I'm back again with this issue (sorry for abandon it).
I need some help, how can I make the +ole log of the crash that you asked me?
WINEDEBUG=+ole wine foo.exe &> /tmp/log.txt
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #6 from Christian c_pradelli@yahoo.com 2009-01-19 13:43:06 --- Created an attachment (id=18838) --> (http://bugs.winehq.org/attachment.cgi?id=18838) +ole log
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #7 from Christian c_pradelli@yahoo.com 2009-01-19 13:44:32 --- I start the application, it raise an AV, I close the error message window and then I try to close the application, every time you try to close it raise an AV so I terminate with ctr+c
the log is attached.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #8 from Austin English austinenglish@gmail.com 2009-07-21 13:46:37 --- Is this still an issue in current (1.1.26 or newer) wine?
http://bugs.winehq.org/show_bug.cgi?id=9575
Christian c_pradelli@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|0.9.44. |1.1.26
--- Comment #9 from Christian c_pradelli@yahoo.com 2009-07-22 08:14:45 --- yes, it still an issue
http://bugs.winehq.org/show_bug.cgi?id=9575
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|1.1.26 |0.9.44.
--- Comment #10 from Dmitry Timoshkov dmitry@codeweavers.com 2009-07-22 19:59:38 --- Adding a comment is enough.
http://bugs.winehq.org/show_bug.cgi?id=9575
Markus mst@collogia.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |mst@collogia.de
--- Comment #11 from Markus mst@collogia.de 2009-09-11 11:49:03 --- Adding some debug output to StgOpenStorage in dlls/ole32/storage32.c reveals that the error seems to come from an faulty call to CreateFileW in lines 6132ff.
fixme:storage:StgOpenStorage C:...\IBExpert\IBExpert.stg fixme:storage:StgOpenStorage hFile : 80 fixme:storage:StgOpenStorage accessMode : 3221225472 fixme:storage:StgOpenStorage shareMode : 0
fixme:storage:StorageImpl_Commit (0x175ea0 0): stub
fixme:storage:StgOpenStorage C:...\IBExpert\IBExpert.stg fixme:storage:StgOpenStorage hFile : ffffffff fixme:storage:StgOpenStorage accessMode : 3221225472 fixme:storage:StgOpenStorage shareMode : 0
The above two CreateFileW calls can be seen every time before the application dump occurs. For some reason this situation cannot be handled by the application correctly.
Best regards.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #12 from Markus mst@collogia.de 2009-09-11 15:32:37 --- Proved finally.
A dirty patch in dlls/ole32/storage32.c CreateFileW in lines 6132ff will make the program work:
hFile = CreateFileW( pwcsName, accessMode, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, /* shareMode, */, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, 0);
No more exceptions. Conclusion: The program does 2 times a CreateFileW with dwSHaredMode = 0 (exclusive) on the same file name. There is no CloseHandle in between. The second call will fail.
MSDN states: ... dwShareMode = 0. Prevents OTHER! processes from opening a file or device if they request delete, read, or write access ...
Wine may be too restrictive when a single process uses such a buggy file handling. As I have no Windows machine to check this out, hopefully someone can build a test case in the native environment and post the results.
Best regards.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #13 from Alexandre Julliard julliard@winehq.org 2009-09-11 16:57:07 --- We have plenty of tests for CreateFile() file sharing already. The problem must be something else.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #14 from Markus mst@collogia.de 2009-09-12 03:33:45 --- Hi,
I'm sorry to tell you that there seems to be some nasty Windows (pre 2008) behaviour that will allow the application to work exactly this way. Details already sent to the devel mailing list:
http://www.winehq.org/pipermail/wine-devel/2009-September/078515.html
Best regards.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #15 from Alexandre Julliard julliard@winehq.org 2009-09-12 05:18:42 --- There's no such behavior. The test is broken.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #16 from Markus mst@collogia.de 2009-09-12 08:19:36 --- Sorry for the initial confusion. I got the reason for the error now exactly. I simply misread the debuggers output.
Situation occurs because of the following behaviour:
- Application calls StgOpenStorage for an file that is already opened. - In line 6130 *ppstgOpen is set to NULL - The CreateFileW afterwards fails and the procedure goes into error handling - *ppstgOpen is not touched any more and points to NULL - Nevertheless application tries to read data at *ppstgOpen - So crash there.
My initial fix worked because it allowed a second open to the file and the pointer got initialized correctly.
Best regards.
http://bugs.winehq.org/show_bug.cgi?id=9575
Paul Vriens Paul.Vriens.Wine@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |Paul.Vriens.Wine@gmail.com
--- Comment #17 from Paul Vriens Paul.Vriens.Wine@gmail.com 2009-09-12 08:54:20 --- Your last comment, together with the fact that a native ole32.dll fixes the issue suggests that you should add/modify some tests in dlls/ole32/tests/storage32.c
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #18 from Markus mst@collogia.de 2009-09-12 09:02:00 --- Sadly I do not know what I really expect. It may be
1. *ppstgOpen is NULL. HRESULT contains Flag STG_E_INVALIDPOINTER. 2. *ppstgOpen is not NULL. HRESULT contains any error code.
I already posted on the devel mailing for help from someone with an native Windows machine.
Best regards.
http://bugs.winehq.org/show_bug.cgi?id=9575
Saulius K. saulius2@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |saulius2@gmail.com
--- Comment #19 from Saulius K. saulius2@gmail.com 2009-09-12 09:37:42 --- In regard to comment #11 (out of curiosity):
fixme:storage:StgOpenStorage C:...\IBExpert\IBExpert.stg fixme:storage:StgOpenStorage hFile : 80 fixme:storage:StgOpenStorage accessMode : 3221225472 fixme:storage:StgOpenStorage shareMode : 0
Markus, you got strange accessMode value, it is 0xC0000000. Which line of dlls/ole32/storage32.c did you trace it from (and how exactly)?
In regard to Markus email:
I found someone to test the program in Windows 2003 and there we have completly different results:
h0 : 0x000007E0 - Result :0 h1 : 0x000007E0 - Result : Sharing Violation
Could this person also run the whole newest Winetest suite [3] and tell the supplied personal tag? So we could check if this machine doesn't act different from others.
[3] http://test.winehq.org/data/4e6db1e18637106aef1f736dad6e9fcd6ff6dc3e/
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #20 from Markus mst@collogia.de 2009-09-12 09:43:58 --- Ad 1.
Output has been taken in lines 6132ff of storage32.c
hFile = CreateFileW( pwcsName, accessMode, shareMode, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, 0);
FIXME("accessMode : %i\n",accessMode); <-- Inserted here
if (hFile==INVALID_HANDLE_VALUE)
Ad 2.
I'll check what I can do.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #21 from Saulius K. saulius2@gmail.com 2009-09-12 10:32:35 --- Sorry for confusing you, I've mixed up access mode values with share mode values. It's GENERIC_READ | GENERIC_WRITE and it's already being tested in Winetest successfully [4] -- is_sharing_compatible() returns FALSE if share mode is 0.
Markus, Christian, do you encounter the bug from namely "Program Files\HK-Software\IBExpert\ibexpert.exe" process ?
[4] http://source.winehq.org/git/wine.git/?a=blob;f=dlls/kernel32/tests/file.c;h...
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #22 from Saulius K. saulius2@gmail.com 2009-09-12 14:03:57 --- OK. I installed IBExpert on my XP Pro SP2 and ran it under debugger. I've got ~20 calls to StgOpenStorage() during whole session. And parameters are always the same: (ptr1, 0, 0x00010012, 0, 0, ptr2);
On input ptr2 always points to NULL, and on output here we get ptr3 or ptr4 (sometimes ptr5 if app is shutting down).
Seems like app is doing some more OLE operations between calls to StgOpenStorage(). Your log shows this line:
fixme:storage:StorageImpl_Commit (0x175ea0 0): stub
Maybe +storage debug flag would help a bit (in addition to +ole)? If not, then probably +relay,+storage,+ole would reveal more details.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #23 from Markus mst@collogia.de 2009-09-13 06:20:07 --- After a lot of confusion but getting all Windows tests together (thanks Paul) the behaviour of StgOpenStorage regarding potiners is equivalent to Windows.
Nevertheless the application crashes because of not being able to open the user settings files for a second time. The ppstgOpen pointer is set to NULL as a result of the failure but the application does not expect this and runs directly into the dump.
In between I was able to get the application run under Windows Vista myself and if I can see it right the application opens/closes the configuration file a few times in the error context. So for some reason the application does not (or cannot) close the file correctly after the first time under Wine and the second access fails.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #24 from Saulius K. saulius2@gmail.com 2009-09-13 06:33:58 ---
for some reason the application does not (or cannot) close the file correctly after the first time under Wine and the second access fails.
That's why I recommended to use additional debug flags (+storage,+ole or even +relay,+storage,+ole).
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #25 from Markus mst@collogia.de 2009-09-13 07:16:03 --- Created an attachment (id=23572) --> (http://bugs.winehq.org/attachment.cgi?id=23572) +ole,+storage trace
Attached an +ole,+storage trace. To reduce the size I have snipped tons of ReadAt & WriteAt commands. If desired I can attach the long version too.
If I get it right the first IStorageObject is destroyed after the second one is created. But I cannot say if this comes from the dump or is bad timing of the application.
Best regards
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #26 from Markus mst@collogia.de 2009-09-18 05:46:23 --- A source of the error may be that Wine modifies reference counters of ancestor IStorage when handling with nested storage objects.
Testcase will be submitted.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #27 from Markus mst@collogia.de 2009-09-28 15:02:36 --- Should be fixed with http://source.winehq.org/git/wine.git/?a=commit;h=abdebcdbbe61cfaf7c9198f279...
Maybe someone can confirm this.
Best regards.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #28 from Paul Vriens Paul.Vriens.Wine@gmail.com 2009-09-29 02:26:09 --- Well, I can confirm that the access violation is no longer present.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #29 from Markus mst@collogia.de 2009-09-29 02:48:18 --- Although the application might still need native ole for other features I think this bug about the access violation can be closed.
http://bugs.winehq.org/show_bug.cgi?id=9575
--- Comment #30 from Christian c_pradelli@yahoo.com 2009-09-29 07:21:37 --- I can confirm if it's completely fixed when it's released in next deb package, because I have some friend that use it for production in Ubuntu machines.
http://bugs.winehq.org/show_bug.cgi?id=9575
Christian c_pradelli@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #31 from Christian c_pradelli@yahoo.com 2009-10-26 14:24:13 --- Seems to fixed. Thanks
http://bugs.winehq.org/show_bug.cgi?id=9575
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #32 from Alexandre Julliard julliard@winehq.org 2009-11-13 12:42:06 --- Closing bugs fixed in 1.1.33.
https://bugs.winehq.org/show_bug.cgi?id=9575
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |abdebcdbbe61cfaf7c9198f2796 | |37ec69daa63d1 Component|ole |ole32