https://bugs.winehq.org/show_bug.cgi?id=17195
--- Comment #186 from Luke Kenneth Casson Leighton lkcl@lkcl.net --- (In reply to Jacek Caban from comment #185)
I agree with Austin. Luke, for the record, I found Alexandre's input very valuable when I was working on this bug and I appreciate it.
with austin's clarification of the rules (which he has only done for the first time in around 20 years) i am unable to respond, jacek, and also at the same time respect what austin has requested... which i am compelled to point out reluctantly (with apologies) that you've also broken.... which is the only reason why i am even able to include this paragraph here. so let's drop the subject, as austin (at last) requests and clarifies.
The fact that we already have in the tree a working version of what you claimed to be impossible without "multithreaded wineserver" is a prove that he was right on the technical ground.
jacek, first and most critical thing: have you run the tests that i developed back in 2009? specifically the ones in this attachment: https://bugs.winehq.org/attachment.cgi?id=19240&action=edit
the tests go well beyond the original reason for the bugreport (python 2.7's multiprocessing module) - for last status see this https://bugs.winehq.org/show_bug.cgi?id=17195#c19
as you can see, juan lang very kindly provided feedback all those years ago (which was very encouraging and also a lot of fun) and his expertise and knowledge proved invaluable to tell which were legitimate tests and which were tests that should be classed as legitimate but "programmer errors".
importantly, the beginnings of a comprehensive test suite for message-mode was developed.
since then i've thought of another test which really needs to be added: filling the buffers with writes that are deliberately not read for a long time.
this is one that i hadn't thought of at the time which could potentially cause wineserver to block on write (or throw an error), leaving a message in an internal queue when it is the *client* that should have been blocked.
... that's if the design is such that messages are sent from the client-process to wineserver and from wineserver to the server-process...
is there a design document which describes the details of the implementation, for review?