http://bugs.winehq.org/show_bug.cgi?id=23488
Summary: A Delphi application crashes Product: Wine Version: 1.2-rc6 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P4 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: t.artem@mailcity.com
Created an attachment (id=29316) --> (http://bugs.winehq.org/attachment.cgi?id=29316) Application with Pascal sources
I have written an application in Delphi 5 to test Intel graphics drivers for Linux, unfortunately this application crashes.
It does work under all Windows versions I have access to.
http://bugs.winehq.org/show_bug.cgi?id=23488
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, source Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #1 from Austin English austinenglish@gmail.com 2010-07-03 11:41:56 --- Confirming. It shows several access violations in user32, and in terminal: fixme:dc:DeleteDC not deleting busy DC 0x6bf0 refcount 2 err:ntdll:RtlpWaitForCriticalSection section 0x7e3582a0 "xrender.c: xrender_cs" wait timed out in thread 002c, blocked by 0029, retrying (60 sec)
http://bugs.winehq.org/show_bug.cgi?id=23488
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Priority|P4 |P2 Severity|normal |minor
--- Comment #2 from Dmitry Timoshkov dmitry@codeweavers.com 2010-07-05 01:27:14 --- The application subclasses "Edit" and messes with the Edit's buffer by calling CallWindowProc() from another thread while main thread handles WM_PAINT.
You need to find a more sane way of doing this kind of things.
Arguably, Edit should lock its buffer while processing current message.
http://bugs.winehq.org/show_bug.cgi?id=23488
--- Comment #3 from Artem S. Tashkinov t.artem@mailcity.com 2010-07-05 03:25:43 --- Yep, I'm a shitty Windows API programmer, I know that. Last time I coded was 9 years ago ;)
Dmitry, if you know Delphi, can you elaborate on what things I should change so this application was more conformant with Windows API?
http://bugs.winehq.org/show_bug.cgi?id=23488
--- Comment #4 from Dmitry Timoshkov dmitry@codeweavers.com 2010-07-05 04:12:48 --- (In reply to comment #3)
Dmitry, if you know Delphi, can you elaborate on what things I should change so this application was more conformant with Windows API?
I don't know Delphi, but I would suggest to get rid of the additional thread and update Edit from the main message loop, or by handling WM_PAINT from the subclassed Edit control. Why do you need to change the text from another thread?
http://bugs.winehq.org/show_bug.cgi?id=23488
--- Comment #5 from Artem S. Tashkinov t.artem@mailcity.com 2010-07-05 04:33:59 --- (In reply to comment #4)
I don't know Delphi, but I would suggest to get rid of the additional thread and update Edit from the main message loop, or by handling WM_PAINT from the subclassed Edit control. Why do you need to change the text from another thread?
I want to do that as fast as possible, at the same time preserving the user ability to stop memo update execution.
I tried using timer events but no matter how I tried updates occured very slowly (if I'm not mistaken minimum timer resolution in Windows is 55ms).
http://bugs.winehq.org/show_bug.cgi?id=23488
--- Comment #6 from Nikolay Sivov bunglehead@gmail.com 2010-07-05 04:44:58 --- You should use a separate thread for user interaction then, that will handle abort commands and won't lock on execution load.
If you need to process events during loops use Application.ProcessMessages() that allows to empty message queue.
Anyway if there's no problem with locking on Windows we need it too, but after 1.2 I guess.
http://bugs.winehq.org/show_bug.cgi?id=23488
--- Comment #7 from Dmitry Timoshkov dmitry@codeweavers.com 2010-07-05 04:46:44 --- (In reply to comment #5)
I want to do that as fast as possible, at the same time preserving the user ability to stop memo update execution.
I tried using timer events but no matter how I tried updates occured very slowly (if I'm not mistaken minimum timer resolution in Windows is 55ms).
What exactly your application is trying to do? Why does it need so frequent Edit updates?
http://bugs.winehq.org/show_bug.cgi?id=23488
--- Comment #8 from Artem S. Tashkinov t.artem@mailcity.com 2010-07-05 05:03:15 --- (In reply to comment #7)
(In reply to comment #5)
I want to do that as fast as possible, at the same time preserving the user ability to stop memo update execution.
I tried using timer events but no matter how I tried updates occured very slowly (if I'm not mistaken minimum timer resolution in Windows is 55ms).
What exactly your application is trying to do? Why does it need so frequent Edit updates?
https://bugs.freedesktop.org/show_bug.cgi?id=28872
First of all, my favorite Irfan View takes almost 2.5 seconds to start under Intel drivers, vs. almost instantly under proprietary NVIDIA drivers.
Secondly, many windows application which update their controls frequently flicker under Intel drivers - again that doesn't happen under proprietary NVIDIA drivers.
So, I was just trying to create a very basic application which itself updates its controls as fast as possible to demonstrate this problem.
http://bugs.winehq.org/show_bug.cgi?id=23488
--- Comment #9 from Dmitry Timoshkov dmitry@codeweavers.com 2010-07-06 02:45:16 --- Just call RedrawWindow() from the thread proc.
http://bugs.winehq.org/show_bug.cgi?id=23488
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |00cpxxx@gmail.com
--- Comment #10 from Bruno Jesus 00cpxxx@gmail.com 2013-01-04 12:07:40 CST --- The application from comment #0 crashes instantly after pressing the Run button for me in wine-git with intel drivers 2.20. There is no backtrace because winedbg internal crashes.
http://bugs.winehq.org/show_bug.cgi?id=23488
--- Comment #11 from Rico kgbricola@web.de 2013-04-03 03:43:21 CDT --- Please read http://wiki.freepascal.org/Multithreaded_Application_Tutorial , I think the same should apply to Delphi. So you may use Synchronize() to update the Form. Does it prevent the crash?
https://bugs.winehq.org/show_bug.cgi?id=23488
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Summary|A Delphi application |Proprietary Delphi |crashes |application with broken | |design crashes | |(cross-thread edit | |control/user interface | |update)
--- Comment #12 from Anastasius Focht focht@gmx.net --- Hello folks,
still present with that broken app. Obviously still present.
$ wine --version wine-1.7.19-70-gd6a59f7
Regards
https://bugs.winehq.org/show_bug.cgi?id=23488
IvanDSM snesivan1@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |snesivan1@gmail.com
--- Comment #13 from IvanDSM snesivan1@gmail.com --- This bug is still present on 4.21. I'm currently unable to test the 5.0 release candidates.