On 01/10/2012 4:08 PM, Ryan Johnson wrote:
> On 01/10/2012 3:07 PM, Ken Brown wrote:
>> On 10/1/2012 2:51 PM, Ryan Johnson wrote:
>>> I'm hitting a strange behavior with emacs lately, where hitting
>>> C-x C-g [1] sometimes causes it to quit instantly: no request to
>>> save files, no seg fault, no error message, just gone (have to
>>> reset the terminal to clear out emacs' ncurses settings). It
>>> invariably happens after I've been away from the terminal for a
>>> while (days) and then come back use it again.
>>>
>>> has anyone else had this happen to them?
>> I haven't seen it, and I do leave emacs running for days or weeks.
>> But I almost always run emacs under X, not in a terminal. Also, I
>> generally use the latest Cygwin snapshot. Have you tried that?
>> Maybe you're being bitten by the /etc problem that Corinna fixed in
>> late July (http://cygwin.com/ml/cygwin/2012-07/msg00666.html).
> OK, I'll give the snapshot a try when I get a chance.
Rats. I thought it was working, but the problem just it again. This time
the emacs session had just been created by a mercurial check-in (to edit
the changelog message) and crashed when I hit C-g to cancel an ESC I no
longer needed.
Packages:
cygwin snapshot 1.7.17s(0.262/5/3) 20120917
bash-4.1.10-4
emacs-24.2-1
emacs-x11-24.2-1
mercurial-2.3.1-1
mintty-1.1.2-1
This time the crash is reproducible, and the test case below paints an
"interesting" story:
mkdir foo
cd foo
hg init
touch foo
hg add foo
EDITOR='emacs -q -nw' hg ci
ESC C-g
<<<crash>>>
reset
<<<"reset is control-G (^G).">>>
EDITOR='emacs -q -nw' hg ci
C-g
<<<"interrupted!">>>
python
C-g
<<<"KeyboardInterrupt">>>
quit # python still running
reset -i ^c
<<<no message>>>
hg record foo
C-g
<<<"Quit (core dumped)">>>
hg record foo
C-c
<<<"interrupted">>>
python
C-g
<<<"Quit (core dumped)">>>
python
C-c
<<<"KeyboardInterrupt">>>
quit # python still running
Apparently, emacs sets the terminal's interrupt character to ^G, causing
^G to interrupt the python script controlling emacs, causing the latter
to not set interrupt back to ^C (due to abnormal exit), and causing
serious (and permanent) confusion for bash: after setting the interrupt
char back to ^C, ^C behaves as expected, but ^G crashes the app. In
addition to mercurial/python above, the same core dump occurs with
gnuplot, cat, and bash history search (^R). Hitting ^G during any of
those commands in a fresh mintty has the usual harmless result.
The stackdump for python killed by a zombie ^G contains:
Stack trace:
Frame Function Args
# 767... => kernel32.dll
0028A49C 767F1A2C (00000003, FFFDE000, 00000000, FFFFFFFF)
0028A4B8 767F4220 (00000003, 0028A4F0, 00000000, FFFFFFFF)
# 610... => cygwin1.dll
0028A608 610D17C8 (0028A6D8, 0028A670, 0028A650, 0028A630)
0028A738 610D1FBF (0028A790, FFFFFFFF, 0000000C, 610FD52A)
0028A7D8 610D244F (00000001, 0028A828, 00000000, 00000000)
0028A848 610D66C5 (611876B0, 61187720, FFF46034, 800D0000)
# 64B => libpython2.6.dll
0028A888 64B45128 (611876B0, 61187720, FFF46034, FFFFF000)
0028A8D8 64B45CB6 (0028A8A0, 61106469, 0053002B, 002B002B)
0028A998 64B46CD7 (800ACF40, 0028A9DC, 0028A9D8, 64B428F9)
0028A9F8 64B423A4 (0028AA3C, 0028AA58, 64C442C0, 00000100)
0028AA78 64C01327 (611876B0, 64C78A32, 00000100, FFF46034)
0028AAD8 64C02559 (611876B0, 64C78A32, 0028AC2C, 64C78A32)
0028AB28 64C02786 (611876B0, 64C78A32, 0028AC2C, 6102C349)
0028AB68 64C0424B (611876B0, 64C78A32, 00000000, 0028AC2C)
0028AC48 64C11589 (00000001, 0028AC90, 00000000, 0028CE64)
# 004... => python2.6.exe
0028AC68 00401190 (00000001, 0028AC90, 80010100, 61275B98)
End of stack trace (more stack frames may be present)
Pulling down the .dbg for this snapshot and running the cygwin1.dll
addresses though addr2line gives:
select_stuff::wait(_types_fd_set*, _types_fd_set*, _types_fd_set*,
unsigned long) at select.cc:368
select at select.cc:190
cygwin_select at select.cc:125
?? at ??:0
Ideas?
Ryan
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple