[GHC] #14271: ghci hangs with -fexternal-interpreter -prof
GHC
ghc-devs at haskell.org
Wed Jan 9 17:19:21 UTC 2019
#14271: ghci hangs with -fexternal-interpreter -prof
-------------------------------------+-------------------------------------
Reporter: AndreasK | Owner: (none)
Type: feature request | Status: closed
Priority: normal | Milestone:
Component: GHCi | Version: 8.2.1
Resolution: duplicate | Keywords: RemoteGHCi
Operating System: Windows | Architecture:
| Unknown/Multiple
Type of failure: GHCi crash | Test Case:
Blocked By: | Blocking:
Related Tickets: #16162 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by bgamari):
For the record, I have reported a number of external-interpreter-related
testsuite failures on Windows in #16156. The most common failure mode is
the test timing-out, which I suspect is due to this hang reported in this
ticket.
My suspicion is that GHC's logic to detect the death of its `iserv`
process is broken on Windows. I did the following to test this:
1. start `ghci -fexternal-interpreter`
2. issue a kill request against its associated interpreter process (using
the "kill" command in Process Explorer)
3. try evaluating `print "hello"`
4. observe that `ghci` indeed hangs
However, I should note that in this experiment the kill request against
the interpreter doesn't actually kill the interpreter process. Rather it
seems to merely hang. Issuing a *second* kill command indeed kills it, at
which point `ghci` realizes the interpreter is dead and terminates.
The backtrace of the interpreter process in its hung state looks like the
following:
{{{
(gdb) thread apply all bt
Thread 6 (Thread 9232.0x19ac):
#0 0x00007ffa06549351 in ntdll!DbgBreakPoint () from
/c/Windows/SYSTEM32/ntdll.dll
#1 0x00007ffa065710ba in ntdll!DbgUiRemoteBreakin () from
/c/Windows/SYSTEM32/ntdll.dll
#2 0x00007ffa061c8364 in KERNEL32!BaseThreadInitThunk () from
/c/Windows/System32/KERNEL32.DLL
#3 0x00007ffa0650e851 in ntdll!RtlUserThreadStart () from
/c/Windows/SYSTEM32/ntdll.dll
#4 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Thread 5 (Thread 9232.0x1c5c):
#0 0x00007ffa06545b84 in ntdll!ZwWaitForSingleObject () from
/c/Windows/SYSTEM32/ntdll.dll
#1 0x00007ffa03413ebf in WaitForSingleObjectEx () from
/c/Windows/System32/KERNELBASE.dll
#2 0x0000000003d70543 in waitCondition (pCond=pCond at entry=0x6c2c768,
pMut=pMut at entry=0x6c2c770)
at rts\win32\OSThreads.c:87
#3 0x0000000003d54d60 in waitForWorkerCapability (task=0x6c2c760) at
rts\Capability.c:651
#4 yieldCapability (pCap=pCap at entry=0x857fe88, task=task at entry=0x6c2c760,
gcAllowed=gcAllowed at entry=true)
at rts\Capability.c:888
#5 0x0000000003d57191 in scheduleYield (task=0x6c2c760, pcap=0x857fea0)
at rts\Schedule.c:672
#6 schedule (initialCapability=<optimized out>, task=<optimized out>,
task at entry=0x6c2c760)
at rts\Schedule.c:292
#7 0x0000000003d5826f in scheduleWorker (cap=<optimized out>,
task=0x6c2c760) at rts\Schedule.c:2550
#8 0x0000000003d7e4f8 in workerStart (task=0x6c2c760) at rts\Task.c:444
#9 0x00007ffa061c8364 in KERNEL32!BaseThreadInitThunk () from
/c/Windows/System32/KERNEL32.DLL
#10 0x00007ffa0650e851 in ntdll!RtlUserThreadStart () from
/c/Windows/SYSTEM32/ntdll.dll
#11 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Thread 4 (Thread 9232.0x20b8):
#0 0x00007ffa06545b84 in ntdll!ZwWaitForSingleObject () from
/c/Windows/SYSTEM32/ntdll.dll
#1 0x00007ffa03413ebf in WaitForSingleObjectEx () from
/c/Windows/System32/KERNELBASE.dll
#2 0x0000000003d70543 in waitCondition (pCond=pCond at entry=0x4d8ee88,
pMut=pMut at entry=0x4d8ee90)
at rts\win32\OSThreads.c:87
#3 0x0000000003d54d60 in waitForWorkerCapability (task=0x4d8ee80) at
rts\Capability.c:651
#4 yieldCapability (pCap=pCap at entry=0x770fe88, task=task at entry=0x4d8ee80,
gcAllowed=gcAllowed at entry=true)
at rts\Capability.c:888
#5 0x0000000003d57191 in scheduleYield (task=0x4d8ee80, pcap=0x770fea0)
at rts\Schedule.c:672
#6 schedule (initialCapability=<optimized out>, task=<optimized out>,
task at entry=0x4d8ee80)
at rts\Schedule.c:292
#7 0x0000000003d5826f in scheduleWorker (cap=<optimized out>,
task=0x4d8ee80) at rts\Schedule.c:2550
#8 0x0000000003d7e4f8 in workerStart (task=0x4d8ee80) at rts\Task.c:444
#9 0x00007ffa061c8364 in KERNEL32!BaseThreadInitThunk () from
/c/Windows/System32/KERNEL32.DLL
#10 0x00007ffa0650e851 in ntdll!RtlUserThreadStart () from
/c/Windows/SYSTEM32/ntdll.dll
#11 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Thread 3 (Thread 9232.0x2098):
#0 0x00007ffa06545b84 in ntdll!ZwWaitForSingleObject () from
/c/Windows/SYSTEM32/ntdll.dll
#1 0x00007ffa03413ebf in WaitForSingleObjectEx () from
/c/Windows/System32/KERNELBASE.dll
#2 0x0000000003c5745d in caqi_info ()
#3 0x0000000004d8e7e0 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Thread 2 (Thread 9232.0x7ac):
#0 0x00007ffa065492d4 in ntdll!ZwWaitForWorkViaWorkerFactory () from
/c/Windows/SYSTEM32/ntdll.dll
#1 0x00007ffa064c9e4e in ntdll!RtlReleaseSRWLockExclusive () from
/c/Windows/SYSTEM32/ntdll.dll
#2 0x00007ffa061c8364 in KERNEL32!BaseThreadInitThunk () from
/c/Windows/System32/KERNEL32.DLL
#3 0x00007ffa0650e851 in ntdll!RtlUserThreadStart () from
/c/Windows/SYSTEM32/ntdll.dll
#4 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Thread 1 (Thread 9232.0x18d4):
#0 0x00007ffa06545c04 in ntdll!ZwWriteFile () from
/c/Windows/SYSTEM32/ntdll.dll
#1 0x00007ffa034140e6 in WriteFile () from
/c/Windows/System32/KERNELBASE.dll
#2 0x00007ffa052e03db in msvcrt!_write () from
/c/Windows/System32/msvcrt.dll
#3 0x00007ffa052dfcca in msvcrt!_write () from
/c/Windows/System32/msvcrt.dll
#4 0x0000000003b2cc20 in s9ja_info ()
#5 0x0000000000000006 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14271#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list