On Mon, Jan 01, 2001 at 06:36:25PM +0100, Marcus Meissner wrote:
> Hi,
> 
> I have the following locking problem while printing from a 16bit application:
> 
> |Ret  USER.34: ENABLEWINDOW() retval=0x0000 ret=0277:365e ds=027f
> |Call GDI.38: ESCAPE(0x14f0,0x000a,0x0025,0x03875ef4,0x00000000) ret=0277:365e 
>ds=027f
> |trace:print:OpenJob16 'LPT1:' 'Der PC-Freiberufler: Ergebnisrechnung' 14f0
> |trace:print:CreateSpoolFile Got printerSpoolCommand '/tmp/lp.out' for output device 
>'LPT1:'
> |trace:print:CreateSpoolFile Just assume it's a file
> |trace:print:OpenJob16 return 0001
> |trace:print:WriteSpool16 0001 4083acb0 00b2
> |err:win32:_EnterSysLevel (0x400f50d8, level 1): Holding 0x406da3a8, level 3. Expect 
>deadlock!
> |CallTo16(func=0817:0000,ds=027f,0x14f0,0x0000) ss:sp=027f:a804
> |err:win32:SYSLEVEL_CheckNotLevel (2): Holding lock of level 3!
> |exception 0x80000003 at address 0x400c6d90, fs 257, pid 19082 ()
> 
> The program is calling ESCAPE(), which locks DC (level 3).
> 
> This in turn calls WINEPS.Escape(), which in turn calls WriteSpool, which
> calls the 16 bit abortproc function.
> 
> I have not yet understood how to solve this problem, just unlocking
> the DC appears to be unsafe.
> 
> Could someone please enlighten me (and probably offer a fix too :) ? 
Hmm ?

This is the very same problem that I discussed WD about some two weeks ago,
isn't it ? (mentioned in WWN etc.)

Andreas Mohr

Reply via email to