unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: gnus makes emacs lose response
       [not found] ` <m24q18rize.fsf@sl392.st-edmunds.cam.ac.uk>
@ 2006-04-05  8:47   ` Kim F. Storm
  2006-04-05 17:55     ` Leon
  0 siblings, 1 reply; 58+ messages in thread
From: Kim F. Storm @ 2006-04-05  8:47 UTC (permalink / raw)
  Cc: emacs-devel

Leon <sdl.web@gmail.com> writes:

> I'm not sure if anybody is looking into this issue. Just want to
> double confirm that this bug exists and causes a lot of trouble when
> using shaky wireless network.

> GNU Emacs 23.0.0.1 (i686-pc-linux-gnu, GTK+ Version 2.8.15) of
> 2006-03-25 on sl392

I installed a fix to the CVS trunk (22.x) on 2006-03-22 that may have
fixed this problem (it corrected an rather severe issue with the
timeout of accept-process-output).

According to the CVS log, that change was merged to the unicode branch
(23.x) on 2006-03-28, i.e. after your emacs was built.  Can you please
try with an up-to-date build, and tell us if the problem is still
there.  Thanks.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-05  8:47   ` gnus makes emacs lose response Kim F. Storm
@ 2006-04-05 17:55     ` Leon
  2006-04-06  9:08       ` Kim F. Storm
  0 siblings, 1 reply; 58+ messages in thread
From: Leon @ 2006-04-05 17:55 UTC (permalink / raw)


storm@cua.dk (Kim F. Storm) writes:

> Leon <sdl.web@gmail.com> writes:
>
>> I'm not sure if anybody is looking into this issue. Just want to
>> double confirm that this bug exists and causes a lot of trouble when
>> using shaky wireless network.
>
>> GNU Emacs 23.0.0.1 (i686-pc-linux-gnu, GTK+ Version 2.8.15) of
>> 2006-03-25 on sl392
>
> I installed a fix to the CVS trunk (22.x) on 2006-03-22 that may have
> fixed this problem (it corrected an rather severe issue with the
> timeout of accept-process-output).
>
> According to the CVS log, that change was merged to the unicode branch
> (23.x) on 2006-03-28, i.e. after your emacs was built.  Can you please
> try with an up-to-date build, and tell us if the problem is still
> there.  Thanks.

Unfortunately, it has not been fixed up to today's CVS. How can I
generate debug messages? Thank you.

-- 
Leon
Emacs:GNU Emacs 23.0.0.1 (i686-pc-linux-gnu, GTK+ Version 2.8.15) of
2006-04-05 on sl392

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-05 17:55     ` Leon
@ 2006-04-06  9:08       ` Kim F. Storm
  2006-04-06 21:15         ` Leon
  2006-04-07 20:58         ` Ralf Angeli
  0 siblings, 2 replies; 58+ messages in thread
From: Kim F. Storm @ 2006-04-06  9:08 UTC (permalink / raw)
  Cc: emacs-devel

Leon <sdl.web@gmail.com> writes:

> Unfortunately, it has not been fixed up to today's CVS. How can I
> generate debug messages? Thank you.

You should run emacs under a debugger
    cd emacs/src
    gdb emacs
    r

When it hangs, stop it

    C-z

then examine the stack and other stuff to see
where it hangs, e.g. as a first step, send us
the output from these commands:

    bt
    xba
    bt full

Please read etc/DEBUG for info on debugging emacs.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-06  9:08       ` Kim F. Storm
@ 2006-04-06 21:15         ` Leon
  2006-04-07  8:13           ` Kim F. Storm
  2006-04-07 20:58         ` Ralf Angeli
  1 sibling, 1 reply; 58+ messages in thread
From: Leon @ 2006-04-06 21:15 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 651 bytes --]

storm@cua.dk (Kim F. Storm) writes:

> Leon <sdl.web@gmail.com> writes:
>
>> Unfortunately, it has not been fixed up to today's CVS. How can I
>> generate debug messages? Thank you.
>
> You should run emacs under a debugger
>     cd emacs/src
>     gdb emacs
>     r
>
> When it hangs, stop it
>
>     C-z
>
> then examine the stack and other stuff to see
> where it hangs, e.g. as a first step, send us
> the output from these commands:
>
>     bt
>     xba
>     bt full
>
> Please read etc/DEBUG for info on debugging emacs.
It seems when I compiled emacs I didn't turn on debug. I have followed
your instruction and get some debug info attached.


[-- Attachment #2: backtrace --]
[-- Type: text/plain, Size: 3549 bytes --]

GNU gdb Red Hat Linux (6.3.0.0-1.122rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".

DISPLAY = :0.0
TERM = xterm
.gdbinit:834: Error in sourced command file:
No struct type named Lisp_Symbol.
(gdb) r
Starting program: /home/b/emacs/src/emacs-23.0.0 -geometry 80x40+0+0
Reading symbols from shared object read from target memory...(no debugging symbols found)...done.
Loaded system supplied DSO at 0x55b000
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1208699216 (LWP 2669)]
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
---Type <return> to continue, or q <return> to quit---
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
Detaching after fork from child process 2672.
Detaching after fork from child process 2674.
---Type <return> to continue, or q <return> to quit---
Detaching after fork from child process 2675.
Detaching after fork from child process 2677.
(no debugging symbols found)
(no debugging symbols found)

Program received signal SIGTSTP, Stopped (user).
[Switching to Thread -1208699216 (LWP 2669)]
0x0055b402 in __kernel_vsyscall ()
(gdb) bt
#0  0x0055b402 in __kernel_vsyscall ()
#1  0x0063a53d in ___newselect_nocancel () from /lib/libc.so.6
#2  0x0819b11e in wait_reading_process_output ()
#3  0xbfa5fc38 in ?? ()
#4  0x00000000 in ?? ()

Lisp Backtrace:
Attempt to extract a component of a value that is not a structure pointer.
(gdb) xba
Attempt to extract a component of a value that is not a structure pointer.
(gdb) bt full
#0  0x0055b402 in __kernel_vsyscall ()
No symbol table info available.
#1  0x0063a53d in ___newselect_nocancel () from /lib/libc.so.6
No symbol table info available.
#2  0x0819b11e in wait_reading_process_output ()
No symbol table info available.
#3  0xbfa5fc38 in ?? ()
No symbol table info available.
#4  0x00000000 in ?? ()
No symbol table info available.

Lisp Backtrace:
Attempt to extract a component of a value that is not a structure pointer.
(gdb)


[-- Attachment #3: Type: text/plain, Size: 115 bytes --]


Thank you, Kim.
-- 
Leon
Emacs:GNU Emacs 23.0.0.1 (i686-pc-linux-gnu, GTK+ Version 2.8.15) of
2006-04-05 on sl392

[-- Attachment #4: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-06 21:15         ` Leon
@ 2006-04-07  8:13           ` Kim F. Storm
  2006-04-07 13:25             ` Leon
  0 siblings, 1 reply; 58+ messages in thread
From: Kim F. Storm @ 2006-04-07  8:13 UTC (permalink / raw)
  Cc: emacs-devel

Leon <sdl.web@gmail.com> writes:

> It seems when I compiled emacs I didn't turn on debug. I have followed
> your instruction and get some debug info attached.
>

Thanks, but...
.. without debugging information, the output from those commands
is inadequate to diagnose the problem.

> #0  0x0055b402 in __kernel_vsyscall ()
> #1  0x0063a53d in ___newselect_nocancel () from /lib/libc.so.6
> #2  0x0819b11e in wait_reading_process_output ()

This is "near the spot" where I made the fix I mentioned.
Maybe that fix isn't in your sources.  A simple way to check:

If you do C-h C-f accept-process-output, do you get this result
[check that the arguments are named SECONDS and MILLISEC] ??


accept-process-output is a built-in function in `C source code'.
(accept-process-output &optional process seconds millisec
just-this-one)

Allow any pending output from subprocesses to be read by Emacs.
It is read into the process' buffers or given to their filter functions.
Non-nil arg process means do not return until some output has been received
from process.

Non-nil second arg seconds and third arg millisec are number of
seconds and milliseconds to wait; return after that much time whether
or not there is input.  If seconds is a floating point number,
it specifies a fractional number of seconds to wait.

If optional fourth arg just-this-one is non-nil, only accept output
from process, suspending reading output from other processes.
If just-this-one is an integer, don't run any timers either.
Return non-nil iff we received any output before the timeout expired.


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-07  8:13           ` Kim F. Storm
@ 2006-04-07 13:25             ` Leon
  0 siblings, 0 replies; 58+ messages in thread
From: Leon @ 2006-04-07 13:25 UTC (permalink / raw)


storm@cua.dk (Kim F. Storm) writes:

> Leon <sdl.web@gmail.com> writes:
>
>> It seems when I compiled emacs I didn't turn on debug. I have followed
>> your instruction and get some debug info attached.
>>
>
> Thanks, but...
> .. without debugging information, the output from those commands
> is inadequate to diagnose the problem.
>

How can compile with debug information? I'll try to re-compile in a
week!

>> #0  0x0055b402 in __kernel_vsyscall ()
>> #1  0x0063a53d in ___newselect_nocancel () from /lib/libc.so.6
>> #2  0x0819b11e in wait_reading_process_output ()
>
> This is "near the spot" where I made the fix I mentioned.
> Maybe that fix isn't in your sources.  A simple way to check:
>
> If you do C-h C-f accept-process-output, do you get this result
> [check that the arguments are named SECONDS and MILLISEC] ??
>

Seems it's in my source.

,--------[ C-h f accept-process-output ]
| accept-process-output is a built-in function in `C source code'.
| (accept-process-output &optional PROCESS SECONDS MILLISEC
| JUST-THIS-ONE)
| 
| Allow any pending output from subprocesses to be read by Emacs.
| It is read into the process' buffers or given to their filter functions.
| Non-nil arg PROCESS means do not return until some output has been received
| from PROCESS.
| 
| Non-nil second arg SECONDS and third arg MILLISEC are number of
| seconds and milliseconds to wait; return after that much time whether
| or not there is input.  If SECONDS is a floating point number,
| it specifies a fractional number of seconds to wait.
| 
| If optional fourth arg JUST-THIS-ONE is non-nil, only accept output
| from PROCESS, suspending reading output from other processes.
| If JUST-THIS-ONE is an integer, don't run any timers either.
| Return non-nil iff we received any output before the timeout expired.
| 
| [back]
`--------

>
> accept-process-output is a built-in function in `C source code'.
> (accept-process-output &optional process seconds millisec
> just-this-one)
>
> Allow any pending output from subprocesses to be read by Emacs.
> It is read into the process' buffers or given to their filter functions.
> Non-nil arg process means do not return until some output has been received
> from process.
>
> Non-nil second arg seconds and third arg millisec are number of
> seconds and milliseconds to wait; return after that much time whether
> or not there is input.  If seconds is a floating point number,
> it specifies a fractional number of seconds to wait.
>
> If optional fourth arg just-this-one is non-nil, only accept output
> from process, suspending reading output from other processes.
> If just-this-one is an integer, don't run any timers either.
> Return non-nil iff we received any output before the timeout expired.

Thank you for explaining this.

-- 
Leon

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-06  9:08       ` Kim F. Storm
  2006-04-06 21:15         ` Leon
@ 2006-04-07 20:58         ` Ralf Angeli
  2006-04-09  1:17           ` Leon
  2006-04-17 20:35           ` Ralf Angeli
  1 sibling, 2 replies; 58+ messages in thread
From: Ralf Angeli @ 2006-04-07 20:58 UTC (permalink / raw)


* Kim F. Storm (2006-04-06) writes:

> then examine the stack and other stuff to see
> where it hangs, e.g. as a first step, send us
> the output from these commands:
>
>     bt
>     xba
>     bt full

How 'bout that? (All strings replaced with "[...]" because I was not
sure if they contained stuff like passwords.)

(gdb) r
Starting program: /usr/src/emacs/src/emacs -geometry 80x40+0+0
[Thread debugging using libthread_db enabled]
[New Thread -1486387520 (LWP 7164)]
[Switching to Thread -1486387520 (LWP 7164)]
Breakpoint 3 at 0x80cf77c: file xterm.c, line 7813.

Program received signal SIGTSTP, Stopped (user).
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xa77f7d2d in select () from /lib/tls/i686/cmov/libc.so.6
#2  0x0819228b in wait_reading_process_output (time_limit=0, microsecs=100000, 
    read_kbd=0, do_display=0, wait_for_cell=137558217, wait_proc=0x8b7ada8, 
    just_wait_proc=0) at process.c:4494
#3  0x08193f5a in Faccept_process_output (process=146255276, seconds=0, 
    millisec=100, just_this_one=137558217) at process.c:3893
#4  0x0815dc3a in Ffuncall (nargs=4, args=0xaffc1cc0) at eval.c:2911
#5  0x0818ab27 in Fbyte_code (bytestr=146094019, vector=146096036, maxdepth=8)
    at bytecode.c:694
#6  0x0815d5ee in funcall_lambda (fun=146096252, nargs=2, 
    arg_vector=0xaffc1df4) at eval.c:3088
#7  0x0815db09 in Ffuncall (nargs=3, args=0xaffc1df0) at eval.c:2956
#8  0x0818ab27 in Fbyte_code (bytestr=146175931, vector=146193772, maxdepth=8)
    at bytecode.c:694
#9  0x0815d5ee in funcall_lambda (fun=146194132, nargs=2, 
    arg_vector=0xaffc1f24) at eval.c:3088
#10 0x0815db09 in Ffuncall (nargs=3, args=0xaffc1f20) at eval.c:2956
#11 0x0818ab27 in Fbyte_code (bytestr=142955195, vector=143969076, maxdepth=7)
    at bytecode.c:694
#12 0x0815d5ee in funcall_lambda (fun=143969292, nargs=2, 
    arg_vector=0xaffc2054) at eval.c:3088
#13 0x0815db09 in Ffuncall (nargs=3, args=0xaffc2050) at eval.c:2956
---Type <return> to continue, or q <return> to quit---
#14 0x0818ab27 in Fbyte_code (bytestr=144102571, vector=144105388, maxdepth=6)
    at bytecode.c:694
#15 0x0815d5ee in funcall_lambda (fun=144105556, nargs=2, 
    arg_vector=0xaffc2184) at eval.c:3088
#16 0x0815db09 in Ffuncall (nargs=3, args=0xaffc2180) at eval.c:2956
#17 0x0818ab27 in Fbyte_code (bytestr=144102315, vector=144103916, maxdepth=6)
    at bytecode.c:694
#18 0x0815d5ee in funcall_lambda (fun=144104276, nargs=2, 
    arg_vector=0xaffc22b4) at eval.c:3088
#19 0x0815db09 in Ffuncall (nargs=3, args=0xaffc22b0) at eval.c:2956
#20 0x0818ab27 in Fbyte_code (bytestr=144102219, vector=144103484, maxdepth=5)
    at bytecode.c:694
#21 0x0815d5ee in funcall_lambda (fun=144103676, nargs=0, 
    arg_vector=0xaffc23e4) at eval.c:3088
#22 0x0815db09 in Ffuncall (nargs=1, args=0xaffc23e0) at eval.c:2956
#23 0x0818ab27 in Fbyte_code (bytestr=143864939, vector=143869220, maxdepth=3)
    at bytecode.c:694
#24 0x0815d5ee in funcall_lambda (fun=143869436, nargs=1, 
    arg_vector=0xaffc2574) at eval.c:3088
#25 0x0815db09 in Ffuncall (nargs=2, args=0xaffc2570) at eval.c:2956
#26 0x0815a1ec in Fcall_interactively (function=142776193, 
    record_flag=137558217, keys=137598716) at callint.c:884
#27 0x080fbb0d in Fcommand_execute (cmd=142776193, record_flag=137558217, 
---Type <return> to continue, or q <return> to quit---
    keys=-514, special=137558217) at keyboard.c:9759
#28 0x081044b8 in command_loop_1 () at keyboard.c:1791
#29 0x0815bee2 in internal_condition_case (bfun=0x8104160 <command_loop_1>, 
    handlers=137602857, hfun=0x80fc610 <cmd_error>) at eval.c:1473
#30 0x080f699e in command_loop_2 () at keyboard.c:1328
#31 0x0815bbbc in internal_catch (tag=-514, func=0x80f6970 <command_loop_2>, 
    arg=137558217) at eval.c:1211
#32 0x080f677e in command_loop () at keyboard.c:1307
#33 0x080f6824 in recursive_edit_1 () at keyboard.c:1000
#34 0x080f6930 in Frecursive_edit () at keyboard.c:1061
#35 0x080f58be in main (argc=3, argv=0xaffc2e54) at emacs.c:1789

Lisp Backtrace:
"accept-process-output"
"imap-wait-for-tag"
"nnimap-retrieve-groups"
"gnus-retrieve-groups"
"gnus-read-active-file-2"
"gnus-read-active-file-1"
"gnus-read-active-file"
"gnus-group-get-new-news"
"call-interactively"
(gdb) xba
"accept-process-output"
"imap-wait-for-tag"
"nnimap-retrieve-groups"
"gnus-retrieve-groups"
"gnus-read-active-file-2"
"gnus-read-active-file-1"
"gnus-read-active-file"
"gnus-group-get-new-news"
"call-interactively"
(gdb) bt full
#0  0xffffe410 in __kernel_vsyscall ()
No symbol table info available.
#1  0xa77f7d2d in select () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#2  0x0819228b in wait_reading_process_output (time_limit=0, microsecs=100000, 
    read_kbd=0, do_display=0, wait_for_cell=137558217, wait_proc=0x8b7ada8, 
    just_wait_proc=0) at process.c:4494
        Atemp = {
  fds_bits = {48, 48, 400, 148630114, 2, 0, 1, 48, 146255272, 400, 0, 
    148630172, 146255276, 135672289, 48, 48, 135049360, 146328635, 137269152, 
    -1342432636, -1342432760, 135871880, 146328619, 2, -1342432728, 3, 
    145778830, -1342432636, -1342432664, 135650297, 146255276, 146328635}
}
        Ctemp = {
  fds_bits = {0 <repeats 25 times>, 268435456, 48, 48, -1342432792, 135869785, 
    13, 135049360}
}
        timeout_reduced_for_timers = 0
        channel = <value optimized out>
        nfds = 0
        Available = {
  fds_bits = {256, 0 <repeats 31 times>}
}
---Type <return> to continue, or q <return> to quit---
        Connecting = {
  fds_bits = {0 <repeats 32 times>}
}
        check_connect = 0
        check_delay = 0
        no_avail = 0
        xerrno = 0
        proc = <value optimized out>
        timeout = {
  tv_sec = 0, 
  tv_usec = 88000
}
        end_time = {
  tv_sec = 1144441079, 
  tv_usec = 90100
}
        wait_channel = 8
        got_some_input = 0
        saved_waiting_for_user_input_p = 0
#3  0x08193f5a in Faccept_process_output (process=146255276, seconds=0, 
    millisec=100, just_this_one=137558217) at process.c:3893
        carry = <value optimized out>
        secs = 0
---Type <return> to continue, or q <return> to quit---
        usecs = -1342432616
#4  0x0815dc3a in Ffuncall (nargs=4, args=0xaffc1cc0) at eval.c:2911
        fun = <value optimized out>
        funcar = <value optimized out>
        numargs = 3
        val = <value optimized out>
        backtrace = {
  next = 0xaffc1db8, 
  function = 0xaffc1cc0, 
  args = 0xaffc1cc4, 
  nargs = 3, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xaffc1c50
        i = 0
#5  0x0818ab27 in Fbyte_code (bytestr=146094019, vector=146096036, maxdepth=8)
    at bytecode.c:694
        v1 = 50
        v2 = <value optimized out>
        op = <value optimized out>
        vectorp = (Lisp_Object *) 0x8b53fa8
        stack = {
---Type <return> to continue, or q <return> to quit---
  pc = 0x8b06a58 "[...]", 
  top = 0xaffc1ccc, 
  bottom = 0xaffc1cc0, 
  byte_string = 146094019, 
  byte_string_start = 0x8b06a14 "[...]", 
  constants = 146096036, 
  next = 0xaffc1e40
}
        top = (Lisp_Object *) 0xaffc1cc0
        result = <value optimized out>
#6  0x0815d5ee in funcall_lambda (fun=146096252, nargs=2, 
    arg_vector=0xaffc1df4) at eval.c:3088
        val = <value optimized out>
        syms_left = <value optimized out>
        next = <value optimized out>
        i = 2
        optional = 1
        rest = 0
#7  0x0815db09 in Ffuncall (nargs=3, args=0xaffc1df0) at eval.c:2956
        fun = 146096252
        funcar = <value optimized out>
        numargs = 2
        val = <value optimized out>
---Type <return> to continue, or q <return> to quit---
        backtrace = {
  next = 0xaffc1ee8, 
  function = 0xaffc1df0, 
  args = 0xaffc1df4, 
  nargs = 2, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xaffc1df4
        i = <value optimized out>
#8  0x0818ab27 in Fbyte_code (bytestr=146175931, vector=146193772, maxdepth=8)
    at bytecode.c:694
        v1 = 245
        v2 = <value optimized out>
        op = <value optimized out>
        vectorp = (Lisp_Object *) 0x8b6bd70
        stack = {
  pc = 0x8ae2fe6 "[...]", 
  top = 0xaffc1df8, 
  bottom = 0xaffc1df0, 
  byte_string = 146175931, 
  byte_string_start = 0x8ae2f54 "[...]", 
---Type <return> to continue, or q <return> to quit---
  constants = 146193772, 
  next = 0xaffc1f70
}
        top = (Lisp_Object *) 0xaffc1df0
        result = <value optimized out>
#9  0x0815d5ee in funcall_lambda (fun=146194132, nargs=2, 
    arg_vector=0xaffc1f24) at eval.c:3088
        val = <value optimized out>
        syms_left = <value optimized out>
        next = <value optimized out>
        i = 2
        optional = 1
        rest = 0
#10 0x0815db09 in Ffuncall (nargs=3, args=0xaffc1f20) at eval.c:2956
        fun = 146194132
        funcar = <value optimized out>
        numargs = 2
        val = <value optimized out>
        backtrace = {
  next = 0xaffc2018, 
  function = 0xaffc1f20, 
  args = 0xaffc1f24, 
  nargs = 2, 
---Type <return> to continue, or q <return> to quit---
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xaffc1f24
        i = <value optimized out>
#11 0x0818ab27 in Fbyte_code (bytestr=142955195, vector=143969076, maxdepth=7)
    at bytecode.c:694
        v1 = 176
        v2 = <value optimized out>
        op = <value optimized out>
        vectorp = (Lisp_Object *) 0x894cb38
        stack = {
  pc = 0x88f4cca "[...]", 
  top = 0xaffc1f28, 
  bottom = 0xaffc1f20, 
  byte_string = 142955195, 
  byte_string_start = 0x88f4c10 "[...]", 
  constants = 143969076, 
  next = 0xaffc20a0
}
        top = (Lisp_Object *) 0xaffc1f20
        result = <value optimized out>
#12 0x0815d5ee in funcall_lambda (fun=143969292, nargs=2, 
---Type <return> to continue, or q <return> to quit---
    arg_vector=0xaffc2054) at eval.c:3088
        val = <value optimized out>
        syms_left = <value optimized out>
        next = <value optimized out>
        i = 2
        optional = 0
        rest = 0
#13 0x0815db09 in Ffuncall (nargs=3, args=0xaffc2050) at eval.c:2956
        fun = 143969292
        funcar = <value optimized out>
        numargs = 2
        val = <value optimized out>
        backtrace = {
  next = 0xaffc2148, 
  function = 0xaffc2050, 
  args = 0xaffc2054, 
  nargs = 2, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xaffc2054
        i = <value optimized out>
#14 0x0818ab27 in Fbyte_code (bytestr=144102571, vector=144105388, maxdepth=6)
---Type <return> to continue, or q <return> to quit---
    at bytecode.c:694
        v1 = 51
        v2 = <value optimized out>
        op = <value optimized out>
        vectorp = (Lisp_Object *) 0x896dfb0
        stack = {
  pc = 0x88a65b8 "[...]", 
  top = 0xaffc2058, 
  bottom = 0xaffc2050, 
  byte_string = 144102571, 
  byte_string_start = 0x88a65a8 "[...]", 
  constants = 144105388, 
  next = 0xaffc21d0
}
        top = (Lisp_Object *) 0xaffc2050
        result = <value optimized out>
#15 0x0815d5ee in funcall_lambda (fun=144105556, nargs=2, 
    arg_vector=0xaffc2184) at eval.c:3088
        val = <value optimized out>
        syms_left = <value optimized out>
        next = <value optimized out>
        i = 2
        optional = 0
---Type <return> to continue, or q <return> to quit---
        rest = 0
#16 0x0815db09 in Ffuncall (nargs=3, args=0xaffc2180) at eval.c:2956
        fun = 144105556
        funcar = <value optimized out>
        numargs = 2
        val = <value optimized out>
        backtrace = {
  next = 0xaffc2278, 
  function = 0xaffc2180, 
  args = 0xaffc2184, 
  nargs = 2, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xaffc2184
        i = <value optimized out>
#17 0x0818ab27 in Fbyte_code (bytestr=144102315, vector=144103916, maxdepth=6)
    at bytecode.c:694
        v1 = 461
        v2 = <value optimized out>
        op = <value optimized out>
        vectorp = (Lisp_Object *) 0x896d9f0
        stack = {
---Type <return> to continue, or q <return> to quit---
  pc = 0x88a6452 "[...]", 
  top = 0xaffc2188, 
  bottom = 0xaffc2180, 
  byte_string = 144102315, 
  byte_string_start = 0x88a6280 "[...]", 
  constants = 144103916, 
  next = 0xaffc2300
}
        top = (Lisp_Object *) 0xaffc2180
        result = <value optimized out>
#18 0x0815d5ee in funcall_lambda (fun=144104276, nargs=2, 
    arg_vector=0xaffc22b4) at eval.c:3088
        val = <value optimized out>
        syms_left = <value optimized out>
        next = <value optimized out>
        i = 2
        optional = 0
        rest = 0
#19 0x0815db09 in Ffuncall (nargs=3, args=0xaffc22b0) at eval.c:2956
        fun = 144104276
        funcar = <value optimized out>
---Type <return> to continue, or q <return> to quit---
        numargs = 2
        val = <value optimized out>
        backtrace = {
  next = 0xaffc23a8, 
  function = 0xaffc22b0, 
  args = 0xaffc22b4, 
  nargs = 2, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xaffc22b4
        i = <value optimized out>
#20 0x0818ab27 in Fbyte_code (bytestr=144102219, vector=144103484, maxdepth=5)
    at bytecode.c:694
        v1 = 68
        v2 = <value optimized out>
        op = <value optimized out>
        vectorp = (Lisp_Object *) 0x896d840
        stack = {
  pc = 0x88a61c9 "[...]", 
  top = 0xaffc22b8, 
  bottom = 0xaffc22b0, 
  byte_string = 144102219, 
---Type <return> to continue, or q <return> to quit---
  byte_string_start = 0x88a6180 "[...]", 
  constants = 144103484, 
  next = 0xaffc2420
}
        top = (Lisp_Object *) 0xaffc22b0
        result = <value optimized out>
#21 0x0815d5ee in funcall_lambda (fun=144103676, nargs=0, 
    arg_vector=0xaffc23e4) at eval.c:3088
        val = <value optimized out>
        syms_left = <value optimized out>
        next = <value optimized out>
        i = 0
        optional = 1
        rest = 0
#22 0x0815db09 in Ffuncall (nargs=1, args=0xaffc23e0) at eval.c:2956
        fun = 144103676
        funcar = <value optimized out>
        numargs = 0
        val = <value optimized out>
        backtrace = {
  next = 0xaffc24c8, 
  function = 0xaffc23e0, 
  args = 0xaffc23e4, 
---Type <return> to continue, or q <return> to quit---
  nargs = 0, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xaffc23e4
        i = <value optimized out>
#23 0x0818ab27 in Fbyte_code (bytestr=143864939, vector=143869220, maxdepth=3)
    at bytecode.c:694
        v1 = 101
        v2 = <value optimized out>
        op = <value optimized out>
        vectorp = (Lisp_Object *) 0x8934528
        stack = {
  pc = 0x89ba169 "[...]", 
  top = 0xaffc23e0, 
  bottom = 0xaffc23e0, 
  byte_string = 143864939, 
  byte_string_start = 0x89ba10c "[...]", 
  constants = 143869220, 
  next = 0x0
}
        top = (Lisp_Object *) 0xaffc23e0
---Type <return> to continue, or q <return> to quit---
        result = <value optimized out>
#24 0x0815d5ee in funcall_lambda (fun=143869436, nargs=1, 
    arg_vector=0xaffc2574) at eval.c:3088
        val = <value optimized out>
        syms_left = <value optimized out>
        next = <value optimized out>
        i = 1
        optional = 1
        rest = 0
#25 0x0815db09 in Ffuncall (nargs=2, args=0xaffc2570) at eval.c:2956
        fun = 143869436
        funcar = <value optimized out>
        numargs = 1
        val = <value optimized out>
        backtrace = {
  next = 0xaffc2718, 
  function = 0xaffc2570, 
  args = 0xaffc2574, 
  nargs = 1, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xaffc2574
---Type <return> to continue, or q <return> to quit---
        i = <value optimized out>
#26 0x0815a1ec in Fcall_interactively (function=142776193, 
    record_flag=137558217, keys=137598716) at callint.c:884
        val = <value optimized out>
        fun = <value optimized out>
        specs = 143864955
        teml = <value optimized out>
        up_event = 137558217
        enable = 137558217
        next_event = 0
        prefix_arg = 137558217
        string = <value optimized out>
        tem = (unsigned char *) 0x81b8871 ""
        i = <value optimized out>
        j = 1
        foo = <value optimized out>
        prompt1 = '\0' <repeats 99 times>
        arg_from_tty = 0
        key_count = 1
        record_then_fail = 0
        save_this_command = 142776193
        save_last_command = 143673529
        save_this_original_command = 142776193
---Type <return> to continue, or q <return> to quit---
        save_real_this_command = 142776193
#27 0x080fbb0d in Fcommand_execute (cmd=142776193, record_flag=137558217, 
    keys=-514, special=137558217) at keyboard.c:9759
        final = 143869436
        tem = <value optimized out>
        prefixarg = 137558217
        backtrace = {
  next = 0x0, 
  function = 0x8322670, 
  args = 0xaffc2740, 
  nargs = 1, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
#28 0x081044b8 in command_loop_1 () at keyboard.c:1791
        cmd = <value optimized out>
        lose = <value optimized out>
        nonundocount = 0
        keybuf = {824, 848, -1483884048, -1342429284, -1476678818, 134536200, 
  -1483884036, -1476636684, 9287600, -1483883960, -1342429196, -1476698759, 
  -1485575509, 134537900, 0, 0, 134526604, 110932256, 134537597, 0, 
  -1342429224, -1342429376, 0, -1485635584, 137558217, 139268593, 0, 1, 1, 
  -1342429192}
---Type <return> to continue, or q <return> to quit---
        i = 1
        prev_modiff = 1176
        prev_buffer = (struct buffer *) 0x8867238
        was_locked = 0
        already_adjusted = <value optimized out>
#29 0x0815bee2 in internal_condition_case (bfun=0x8104160 <command_loop_1>, 
    handlers=137602857, hfun=0x80fc610 <cmd_error>) at eval.c:1473
        val = <value optimized out>
        c = {
  tag = 137558217, 
  val = 137558217, 
  next = 0xaffc2920, 
  gcpro = 0x0, 
  jmp = {{
      __jmpbuf = {0, 1, 1, -1342428952, -1342429184, 135642787}, 
      __mask_was_saved = 0, 
      __saved_mask = {
        __val = {0, 2952538336, 2818331912, 134537597, 110932256, 16777216, 
          0 <repeats 21 times>, 2809367228, 2811083336, 2818330612, 
          2818331912, 1}
      }
    }}, 
  backlist = 0x0, 
---Type <return> to continue, or q <return> to quit---
  handlerlist = 0x0, 
  lisp_eval_depth = 0, 
  pdlcount = 2, 
  poll_suppress_count = 1, 
  interrupt_input_blocked = 0, 
  byte_stack = 0x0
}
        h = {
  handler = 137602857, 
  var = 137558217, 
  chosen_clause = 136030732, 
  tag = 0xaffc280c, 
  next = 0x0
}
#30 0x080f699e in command_loop_2 () at keyboard.c:1328
        val = <value optimized out>
#31 0x0815bbbc in internal_catch (tag=-514, func=0x80f6970 <command_loop_2>, 
    arg=137558217) at eval.c:1211
        c = {
  tag = 137599089, 
  val = 137558217, 
  next = 0x0, 
  gcpro = 0x0, 
---Type <return> to continue, or q <return> to quit---
  jmp = {{
      __jmpbuf = {0, 1, 1, -1342428696, -1342428912, 135642031}, 
      __mask_was_saved = 0, 
      __saved_mask = {
        __val = {0, 0, 139993024, 12, 12, 2952538152, 135555972, 139993024, 
          12, 12, 12, 2952538436, 137743378, 137740448, 137740449, 2952538568, 
          135575905, 137740449, 137743378, 137558217, 137590072, 1, 137590072, 
          137558217, 137558241, 2, 137743376, 2952538584, 137740448, 
          137740449, 0, 2952538632}
      }
    }}, 
  backlist = 0x0, 
  handlerlist = 0x0, 
  lisp_eval_depth = 0, 
  pdlcount = 2, 
  poll_suppress_count = 1, 
  interrupt_input_blocked = 0, 
  byte_stack = 0x0
}
#32 0x080f677e in command_loop () at keyboard.c:1307
No locals.
#33 0x080f6824 in recursive_edit_1 () at keyboard.c:1000
        val = <value optimized out>
---Type <return> to continue, or q <return> to quit---
#34 0x080f6930 in Frecursive_edit () at keyboard.c:1061
        buffer = <value optimized out>
#35 0x080f58be in main (argc=3, argv=0xaffc2e54) at emacs.c:1789
        tz = 0x0
        dummy = -1342427688
        stack_bottom_variable = 8 '\b'
        do_initial_setlocale = 1
        skip_args = 0
        rlim = {
  rlim_cur = 8388608, 
  rlim_max = 18446744073709551615
}
        no_loadup = 0
        junk = 0x0

Lisp Backtrace:
"accept-process-output"
"imap-wait-for-tag"
"nnimap-retrieve-groups"
"gnus-retrieve-groups"
"gnus-read-active-file-2"
"gnus-read-active-file-1"
"gnus-read-active-file"
---Type <return> to continue, or q <return> to quit---
"gnus-group-get-new-news"
"call-interactively"

-- 
Ralf

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-07 20:58         ` Ralf Angeli
@ 2006-04-09  1:17           ` Leon
  2006-04-17 20:35           ` Ralf Angeli
  1 sibling, 0 replies; 58+ messages in thread
From: Leon @ 2006-04-09  1:17 UTC (permalink / raw)


Thank you, Ralf. Hope someone and fix the bug based on your post!

Ralf Angeli <angeli@iwi.uni-sb.de> writes:

> * Kim F. Storm (2006-04-06) writes:
>
>> then examine the stack and other stuff to see
>> where it hangs, e.g. as a first step, send us
>> the output from these commands:
>>
>>     bt
>>     xba
>>     bt full
>
> How 'bout that? (All strings replaced with "[...]" because I was not
> sure if they contained stuff like passwords.)
>
> (gdb) r
> Starting program: /usr/src/emacs/src/emacs -geometry 80x40+0+0
> [Thread debugging using libthread_db enabled]
> [New Thread -1486387520 (LWP 7164)]
> [Switching to Thread -1486387520 (LWP 7164)]
> Breakpoint 3 at 0x80cf77c: file xterm.c, line 7813.
>
> Program received signal SIGTSTP, Stopped (user).
> 0xffffe410 in __kernel_vsyscall ()
> (gdb) bt
> #0  0xffffe410 in __kernel_vsyscall ()
> #1  0xa77f7d2d in select () from /lib/tls/i686/cmov/libc.so.6
> #2  0x0819228b in wait_reading_process_output (time_limit=0, microsecs=100000, 
>     read_kbd=0, do_display=0, wait_for_cell=137558217, wait_proc=0x8b7ada8, 
>     just_wait_proc=0) at process.c:4494
> #3  0x08193f5a in Faccept_process_output (process=146255276, seconds=0, 
>     millisec=100, just_this_one=137558217) at process.c:3893
> #4  0x0815dc3a in Ffuncall (nargs=4, args=0xaffc1cc0) at eval.c:2911
> #5  0x0818ab27 in Fbyte_code (bytestr=146094019, vector=146096036, maxdepth=8)
>     at bytecode.c:694
> #6  0x0815d5ee in funcall_lambda (fun=146096252, nargs=2, 
>     arg_vector=0xaffc1df4) at eval.c:3088
> #7  0x0815db09 in Ffuncall (nargs=3, args=0xaffc1df0) at eval.c:2956
> #8  0x0818ab27 in Fbyte_code (bytestr=146175931, vector=146193772, maxdepth=8)
>     at bytecode.c:694
> #9  0x0815d5ee in funcall_lambda (fun=146194132, nargs=2, 
>     arg_vector=0xaffc1f24) at eval.c:3088
> #10 0x0815db09 in Ffuncall (nargs=3, args=0xaffc1f20) at eval.c:2956
> #11 0x0818ab27 in Fbyte_code (bytestr=142955195, vector=143969076, maxdepth=7)
>     at bytecode.c:694
> #12 0x0815d5ee in funcall_lambda (fun=143969292, nargs=2, 
>     arg_vector=0xaffc2054) at eval.c:3088
> #13 0x0815db09 in Ffuncall (nargs=3, args=0xaffc2050) at eval.c:2956
> ---Type <return> to continue, or q <return> to quit---
> #14 0x0818ab27 in Fbyte_code (bytestr=144102571, vector=144105388, maxdepth=6)
>     at bytecode.c:694
> #15 0x0815d5ee in funcall_lambda (fun=144105556, nargs=2, 
>     arg_vector=0xaffc2184) at eval.c:3088
> #16 0x0815db09 in Ffuncall (nargs=3, args=0xaffc2180) at eval.c:2956
> #17 0x0818ab27 in Fbyte_code (bytestr=144102315, vector=144103916, maxdepth=6)
>     at bytecode.c:694
> #18 0x0815d5ee in funcall_lambda (fun=144104276, nargs=2, 
>     arg_vector=0xaffc22b4) at eval.c:3088
> #19 0x0815db09 in Ffuncall (nargs=3, args=0xaffc22b0) at eval.c:2956
> #20 0x0818ab27 in Fbyte_code (bytestr=144102219, vector=144103484, maxdepth=5)
>     at bytecode.c:694
> #21 0x0815d5ee in funcall_lambda (fun=144103676, nargs=0, 
>     arg_vector=0xaffc23e4) at eval.c:3088
> #22 0x0815db09 in Ffuncall (nargs=1, args=0xaffc23e0) at eval.c:2956
> #23 0x0818ab27 in Fbyte_code (bytestr=143864939, vector=143869220, maxdepth=3)
>     at bytecode.c:694
> #24 0x0815d5ee in funcall_lambda (fun=143869436, nargs=1, 
>     arg_vector=0xaffc2574) at eval.c:3088
> #25 0x0815db09 in Ffuncall (nargs=2, args=0xaffc2570) at eval.c:2956
> #26 0x0815a1ec in Fcall_interactively (function=142776193, 
>     record_flag=137558217, keys=137598716) at callint.c:884
> #27 0x080fbb0d in Fcommand_execute (cmd=142776193, record_flag=137558217, 
> ---Type <return> to continue, or q <return> to quit---
>     keys=-514, special=137558217) at keyboard.c:9759
> #28 0x081044b8 in command_loop_1 () at keyboard.c:1791
> #29 0x0815bee2 in internal_condition_case (bfun=0x8104160 <command_loop_1>, 
>     handlers=137602857, hfun=0x80fc610 <cmd_error>) at eval.c:1473
> #30 0x080f699e in command_loop_2 () at keyboard.c:1328
> #31 0x0815bbbc in internal_catch (tag=-514, func=0x80f6970 <command_loop_2>, 
>     arg=137558217) at eval.c:1211
> #32 0x080f677e in command_loop () at keyboard.c:1307
> #33 0x080f6824 in recursive_edit_1 () at keyboard.c:1000
> #34 0x080f6930 in Frecursive_edit () at keyboard.c:1061
> #35 0x080f58be in main (argc=3, argv=0xaffc2e54) at emacs.c:1789
>
> Lisp Backtrace:
> "accept-process-output"
> "imap-wait-for-tag"
> "nnimap-retrieve-groups"
> "gnus-retrieve-groups"
> "gnus-read-active-file-2"
> "gnus-read-active-file-1"
> "gnus-read-active-file"
> "gnus-group-get-new-news"
> "call-interactively"
> (gdb) xba
> "accept-process-output"
> "imap-wait-for-tag"
> "nnimap-retrieve-groups"
> "gnus-retrieve-groups"
> "gnus-read-active-file-2"
> "gnus-read-active-file-1"
> "gnus-read-active-file"
> "gnus-group-get-new-news"
> "call-interactively"
> (gdb) bt full
> #0  0xffffe410 in __kernel_vsyscall ()
> No symbol table info available.
> #1  0xa77f7d2d in select () from /lib/tls/i686/cmov/libc.so.6
> No symbol table info available.
> #2  0x0819228b in wait_reading_process_output (time_limit=0, microsecs=100000, 
>     read_kbd=0, do_display=0, wait_for_cell=137558217, wait_proc=0x8b7ada8, 
>     just_wait_proc=0) at process.c:4494
>         Atemp = {
>   fds_bits = {48, 48, 400, 148630114, 2, 0, 1, 48, 146255272, 400, 0, 
>     148630172, 146255276, 135672289, 48, 48, 135049360, 146328635, 137269152, 
>     -1342432636, -1342432760, 135871880, 146328619, 2, -1342432728, 3, 
>     145778830, -1342432636, -1342432664, 135650297, 146255276, 146328635}
> }
>         Ctemp = {
>   fds_bits = {0 <repeats 25 times>, 268435456, 48, 48, -1342432792, 135869785, 
>     13, 135049360}
> }
>         timeout_reduced_for_timers = 0
>         channel = <value optimized out>
>         nfds = 0
>         Available = {
>   fds_bits = {256, 0 <repeats 31 times>}
> }
> ---Type <return> to continue, or q <return> to quit---
>         Connecting = {
>   fds_bits = {0 <repeats 32 times>}
> }
>         check_connect = 0
>         check_delay = 0
>         no_avail = 0
>         xerrno = 0
>         proc = <value optimized out>
>         timeout = {
>   tv_sec = 0, 
>   tv_usec = 88000
> }
>         end_time = {
>   tv_sec = 1144441079, 
>   tv_usec = 90100
> }
>         wait_channel = 8
>         got_some_input = 0
>         saved_waiting_for_user_input_p = 0
> #3  0x08193f5a in Faccept_process_output (process=146255276, seconds=0, 
>     millisec=100, just_this_one=137558217) at process.c:3893
>         carry = <value optimized out>
>         secs = 0
> ---Type <return> to continue, or q <return> to quit---
>         usecs = -1342432616
> #4  0x0815dc3a in Ffuncall (nargs=4, args=0xaffc1cc0) at eval.c:2911
>         fun = <value optimized out>
>         funcar = <value optimized out>
>         numargs = 3
>         val = <value optimized out>
>         backtrace = {
>   next = 0xaffc1db8, 
>   function = 0xaffc1cc0, 
>   args = 0xaffc1cc4, 
>   nargs = 3, 
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
>         internal_args = (Lisp_Object *) 0xaffc1c50
>         i = 0
> #5  0x0818ab27 in Fbyte_code (bytestr=146094019, vector=146096036, maxdepth=8)
>     at bytecode.c:694
>         v1 = 50
>         v2 = <value optimized out>
>         op = <value optimized out>
>         vectorp = (Lisp_Object *) 0x8b53fa8
>         stack = {
> ---Type <return> to continue, or q <return> to quit---
>   pc = 0x8b06a58 "[...]", 
>   top = 0xaffc1ccc, 
>   bottom = 0xaffc1cc0, 
>   byte_string = 146094019, 
>   byte_string_start = 0x8b06a14 "[...]", 
>   constants = 146096036, 
>   next = 0xaffc1e40
> }
>         top = (Lisp_Object *) 0xaffc1cc0
>         result = <value optimized out>
> #6  0x0815d5ee in funcall_lambda (fun=146096252, nargs=2, 
>     arg_vector=0xaffc1df4) at eval.c:3088
>         val = <value optimized out>
>         syms_left = <value optimized out>
>         next = <value optimized out>
>         i = 2
>         optional = 1
>         rest = 0
> #7  0x0815db09 in Ffuncall (nargs=3, args=0xaffc1df0) at eval.c:2956
>         fun = 146096252
>         funcar = <value optimized out>
>         numargs = 2
>         val = <value optimized out>
> ---Type <return> to continue, or q <return> to quit---
>         backtrace = {
>   next = 0xaffc1ee8, 
>   function = 0xaffc1df0, 
>   args = 0xaffc1df4, 
>   nargs = 2, 
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
>         internal_args = (Lisp_Object *) 0xaffc1df4
>         i = <value optimized out>
> #8  0x0818ab27 in Fbyte_code (bytestr=146175931, vector=146193772, maxdepth=8)
>     at bytecode.c:694
>         v1 = 245
>         v2 = <value optimized out>
>         op = <value optimized out>
>         vectorp = (Lisp_Object *) 0x8b6bd70
>         stack = {
>   pc = 0x8ae2fe6 "[...]", 
>   top = 0xaffc1df8, 
>   bottom = 0xaffc1df0, 
>   byte_string = 146175931, 
>   byte_string_start = 0x8ae2f54 "[...]", 
> ---Type <return> to continue, or q <return> to quit---
>   constants = 146193772, 
>   next = 0xaffc1f70
> }
>         top = (Lisp_Object *) 0xaffc1df0
>         result = <value optimized out>
> #9  0x0815d5ee in funcall_lambda (fun=146194132, nargs=2, 
>     arg_vector=0xaffc1f24) at eval.c:3088
>         val = <value optimized out>
>         syms_left = <value optimized out>
>         next = <value optimized out>
>         i = 2
>         optional = 1
>         rest = 0
> #10 0x0815db09 in Ffuncall (nargs=3, args=0xaffc1f20) at eval.c:2956
>         fun = 146194132
>         funcar = <value optimized out>
>         numargs = 2
>         val = <value optimized out>
>         backtrace = {
>   next = 0xaffc2018, 
>   function = 0xaffc1f20, 
>   args = 0xaffc1f24, 
>   nargs = 2, 
> ---Type <return> to continue, or q <return> to quit---
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
>         internal_args = (Lisp_Object *) 0xaffc1f24
>         i = <value optimized out>
> #11 0x0818ab27 in Fbyte_code (bytestr=142955195, vector=143969076, maxdepth=7)
>     at bytecode.c:694
>         v1 = 176
>         v2 = <value optimized out>
>         op = <value optimized out>
>         vectorp = (Lisp_Object *) 0x894cb38
>         stack = {
>   pc = 0x88f4cca "[...]", 
>   top = 0xaffc1f28, 
>   bottom = 0xaffc1f20, 
>   byte_string = 142955195, 
>   byte_string_start = 0x88f4c10 "[...]", 
>   constants = 143969076, 
>   next = 0xaffc20a0
> }
>         top = (Lisp_Object *) 0xaffc1f20
>         result = <value optimized out>
> #12 0x0815d5ee in funcall_lambda (fun=143969292, nargs=2, 
> ---Type <return> to continue, or q <return> to quit---
>     arg_vector=0xaffc2054) at eval.c:3088
>         val = <value optimized out>
>         syms_left = <value optimized out>
>         next = <value optimized out>
>         i = 2
>         optional = 0
>         rest = 0
> #13 0x0815db09 in Ffuncall (nargs=3, args=0xaffc2050) at eval.c:2956
>         fun = 143969292
>         funcar = <value optimized out>
>         numargs = 2
>         val = <value optimized out>
>         backtrace = {
>   next = 0xaffc2148, 
>   function = 0xaffc2050, 
>   args = 0xaffc2054, 
>   nargs = 2, 
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
>         internal_args = (Lisp_Object *) 0xaffc2054
>         i = <value optimized out>
> #14 0x0818ab27 in Fbyte_code (bytestr=144102571, vector=144105388, maxdepth=6)
> ---Type <return> to continue, or q <return> to quit---
>     at bytecode.c:694
>         v1 = 51
>         v2 = <value optimized out>
>         op = <value optimized out>
>         vectorp = (Lisp_Object *) 0x896dfb0
>         stack = {
>   pc = 0x88a65b8 "[...]", 
>   top = 0xaffc2058, 
>   bottom = 0xaffc2050, 
>   byte_string = 144102571, 
>   byte_string_start = 0x88a65a8 "[...]", 
>   constants = 144105388, 
>   next = 0xaffc21d0
> }
>         top = (Lisp_Object *) 0xaffc2050
>         result = <value optimized out>
> #15 0x0815d5ee in funcall_lambda (fun=144105556, nargs=2, 
>     arg_vector=0xaffc2184) at eval.c:3088
>         val = <value optimized out>
>         syms_left = <value optimized out>
>         next = <value optimized out>
>         i = 2
>         optional = 0
> ---Type <return> to continue, or q <return> to quit---
>         rest = 0
> #16 0x0815db09 in Ffuncall (nargs=3, args=0xaffc2180) at eval.c:2956
>         fun = 144105556
>         funcar = <value optimized out>
>         numargs = 2
>         val = <value optimized out>
>         backtrace = {
>   next = 0xaffc2278, 
>   function = 0xaffc2180, 
>   args = 0xaffc2184, 
>   nargs = 2, 
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
>         internal_args = (Lisp_Object *) 0xaffc2184
>         i = <value optimized out>
> #17 0x0818ab27 in Fbyte_code (bytestr=144102315, vector=144103916, maxdepth=6)
>     at bytecode.c:694
>         v1 = 461
>         v2 = <value optimized out>
>         op = <value optimized out>
>         vectorp = (Lisp_Object *) 0x896d9f0
>         stack = {
> ---Type <return> to continue, or q <return> to quit---
>   pc = 0x88a6452 "[...]", 
>   top = 0xaffc2188, 
>   bottom = 0xaffc2180, 
>   byte_string = 144102315, 
>   byte_string_start = 0x88a6280 "[...]", 
>   constants = 144103916, 
>   next = 0xaffc2300
> }
>         top = (Lisp_Object *) 0xaffc2180
>         result = <value optimized out>
> #18 0x0815d5ee in funcall_lambda (fun=144104276, nargs=2, 
>     arg_vector=0xaffc22b4) at eval.c:3088
>         val = <value optimized out>
>         syms_left = <value optimized out>
>         next = <value optimized out>
>         i = 2
>         optional = 0
>         rest = 0
> #19 0x0815db09 in Ffuncall (nargs=3, args=0xaffc22b0) at eval.c:2956
>         fun = 144104276
>         funcar = <value optimized out>
> ---Type <return> to continue, or q <return> to quit---
>         numargs = 2
>         val = <value optimized out>
>         backtrace = {
>   next = 0xaffc23a8, 
>   function = 0xaffc22b0, 
>   args = 0xaffc22b4, 
>   nargs = 2, 
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
>         internal_args = (Lisp_Object *) 0xaffc22b4
>         i = <value optimized out>
> #20 0x0818ab27 in Fbyte_code (bytestr=144102219, vector=144103484, maxdepth=5)
>     at bytecode.c:694
>         v1 = 68
>         v2 = <value optimized out>
>         op = <value optimized out>
>         vectorp = (Lisp_Object *) 0x896d840
>         stack = {
>   pc = 0x88a61c9 "[...]", 
>   top = 0xaffc22b8, 
>   bottom = 0xaffc22b0, 
>   byte_string = 144102219, 
> ---Type <return> to continue, or q <return> to quit---
>   byte_string_start = 0x88a6180 "[...]", 
>   constants = 144103484, 
>   next = 0xaffc2420
> }
>         top = (Lisp_Object *) 0xaffc22b0
>         result = <value optimized out>
> #21 0x0815d5ee in funcall_lambda (fun=144103676, nargs=0, 
>     arg_vector=0xaffc23e4) at eval.c:3088
>         val = <value optimized out>
>         syms_left = <value optimized out>
>         next = <value optimized out>
>         i = 0
>         optional = 1
>         rest = 0
> #22 0x0815db09 in Ffuncall (nargs=1, args=0xaffc23e0) at eval.c:2956
>         fun = 144103676
>         funcar = <value optimized out>
>         numargs = 0
>         val = <value optimized out>
>         backtrace = {
>   next = 0xaffc24c8, 
>   function = 0xaffc23e0, 
>   args = 0xaffc23e4, 
> ---Type <return> to continue, or q <return> to quit---
>   nargs = 0, 
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
>         internal_args = (Lisp_Object *) 0xaffc23e4
>         i = <value optimized out>
> #23 0x0818ab27 in Fbyte_code (bytestr=143864939, vector=143869220, maxdepth=3)
>     at bytecode.c:694
>         v1 = 101
>         v2 = <value optimized out>
>         op = <value optimized out>
>         vectorp = (Lisp_Object *) 0x8934528
>         stack = {
>   pc = 0x89ba169 "[...]", 
>   top = 0xaffc23e0, 
>   bottom = 0xaffc23e0, 
>   byte_string = 143864939, 
>   byte_string_start = 0x89ba10c "[...]", 
>   constants = 143869220, 
>   next = 0x0
> }
>         top = (Lisp_Object *) 0xaffc23e0
> ---Type <return> to continue, or q <return> to quit---
>         result = <value optimized out>
> #24 0x0815d5ee in funcall_lambda (fun=143869436, nargs=1, 
>     arg_vector=0xaffc2574) at eval.c:3088
>         val = <value optimized out>
>         syms_left = <value optimized out>
>         next = <value optimized out>
>         i = 1
>         optional = 1
>         rest = 0
> #25 0x0815db09 in Ffuncall (nargs=2, args=0xaffc2570) at eval.c:2956
>         fun = 143869436
>         funcar = <value optimized out>
>         numargs = 1
>         val = <value optimized out>
>         backtrace = {
>   next = 0xaffc2718, 
>   function = 0xaffc2570, 
>   args = 0xaffc2574, 
>   nargs = 1, 
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
>         internal_args = (Lisp_Object *) 0xaffc2574
> ---Type <return> to continue, or q <return> to quit---
>         i = <value optimized out>
> #26 0x0815a1ec in Fcall_interactively (function=142776193, 
>     record_flag=137558217, keys=137598716) at callint.c:884
>         val = <value optimized out>
>         fun = <value optimized out>
>         specs = 143864955
>         teml = <value optimized out>
>         up_event = 137558217
>         enable = 137558217
>         next_event = 0
>         prefix_arg = 137558217
>         string = <value optimized out>
>         tem = (unsigned char *) 0x81b8871 ""
>         i = <value optimized out>
>         j = 1
>         foo = <value optimized out>
>         prompt1 = '\0' <repeats 99 times>
>         arg_from_tty = 0
>         key_count = 1
>         record_then_fail = 0
>         save_this_command = 142776193
>         save_last_command = 143673529
>         save_this_original_command = 142776193
> ---Type <return> to continue, or q <return> to quit---
>         save_real_this_command = 142776193
> #27 0x080fbb0d in Fcommand_execute (cmd=142776193, record_flag=137558217, 
>     keys=-514, special=137558217) at keyboard.c:9759
>         final = 143869436
>         tem = <value optimized out>
>         prefixarg = 137558217
>         backtrace = {
>   next = 0x0, 
>   function = 0x8322670, 
>   args = 0xaffc2740, 
>   nargs = 1, 
>   evalargs = 0 '\0', 
>   debug_on_exit = 0 '\0'
> }
> #28 0x081044b8 in command_loop_1 () at keyboard.c:1791
>         cmd = <value optimized out>
>         lose = <value optimized out>
>         nonundocount = 0
>         keybuf = {824, 848, -1483884048, -1342429284, -1476678818, 134536200, 
>   -1483884036, -1476636684, 9287600, -1483883960, -1342429196, -1476698759, 
>   -1485575509, 134537900, 0, 0, 134526604, 110932256, 134537597, 0, 
>   -1342429224, -1342429376, 0, -1485635584, 137558217, 139268593, 0, 1, 1, 
>   -1342429192}
> ---Type <return> to continue, or q <return> to quit---
>         i = 1
>         prev_modiff = 1176
>         prev_buffer = (struct buffer *) 0x8867238
>         was_locked = 0
>         already_adjusted = <value optimized out>
> #29 0x0815bee2 in internal_condition_case (bfun=0x8104160 <command_loop_1>, 
>     handlers=137602857, hfun=0x80fc610 <cmd_error>) at eval.c:1473
>         val = <value optimized out>
>         c = {
>   tag = 137558217, 
>   val = 137558217, 
>   next = 0xaffc2920, 
>   gcpro = 0x0, 
>   jmp = {{
>       __jmpbuf = {0, 1, 1, -1342428952, -1342429184, 135642787}, 
>       __mask_was_saved = 0, 
>       __saved_mask = {
>         __val = {0, 2952538336, 2818331912, 134537597, 110932256, 16777216, 
>           0 <repeats 21 times>, 2809367228, 2811083336, 2818330612, 
>           2818331912, 1}
>       }
>     }}, 
>   backlist = 0x0, 
> ---Type <return> to continue, or q <return> to quit---
>   handlerlist = 0x0, 
>   lisp_eval_depth = 0, 
>   pdlcount = 2, 
>   poll_suppress_count = 1, 
>   interrupt_input_blocked = 0, 
>   byte_stack = 0x0
> }
>         h = {
>   handler = 137602857, 
>   var = 137558217, 
>   chosen_clause = 136030732, 
>   tag = 0xaffc280c, 
>   next = 0x0
> }
> #30 0x080f699e in command_loop_2 () at keyboard.c:1328
>         val = <value optimized out>
> #31 0x0815bbbc in internal_catch (tag=-514, func=0x80f6970 <command_loop_2>, 
>     arg=137558217) at eval.c:1211
>         c = {
>   tag = 137599089, 
>   val = 137558217, 
>   next = 0x0, 
>   gcpro = 0x0, 
> ---Type <return> to continue, or q <return> to quit---
>   jmp = {{
>       __jmpbuf = {0, 1, 1, -1342428696, -1342428912, 135642031}, 
>       __mask_was_saved = 0, 
>       __saved_mask = {
>         __val = {0, 0, 139993024, 12, 12, 2952538152, 135555972, 139993024, 
>           12, 12, 12, 2952538436, 137743378, 137740448, 137740449, 2952538568, 
>           135575905, 137740449, 137743378, 137558217, 137590072, 1, 137590072, 
>           137558217, 137558241, 2, 137743376, 2952538584, 137740448, 
>           137740449, 0, 2952538632}
>       }
>     }}, 
>   backlist = 0x0, 
>   handlerlist = 0x0, 
>   lisp_eval_depth = 0, 
>   pdlcount = 2, 
>   poll_suppress_count = 1, 
>   interrupt_input_blocked = 0, 
>   byte_stack = 0x0
> }
> #32 0x080f677e in command_loop () at keyboard.c:1307
> No locals.
> #33 0x080f6824 in recursive_edit_1 () at keyboard.c:1000
>         val = <value optimized out>
> ---Type <return> to continue, or q <return> to quit---
> #34 0x080f6930 in Frecursive_edit () at keyboard.c:1061
>         buffer = <value optimized out>
> #35 0x080f58be in main (argc=3, argv=0xaffc2e54) at emacs.c:1789
>         tz = 0x0
>         dummy = -1342427688
>         stack_bottom_variable = 8 '\b'
>         do_initial_setlocale = 1
>         skip_args = 0
>         rlim = {
>   rlim_cur = 8388608, 
>   rlim_max = 18446744073709551615
> }
>         no_loadup = 0
>         junk = 0x0
>
> Lisp Backtrace:
> "accept-process-output"
> "imap-wait-for-tag"
> "nnimap-retrieve-groups"
> "gnus-retrieve-groups"
> "gnus-read-active-file-2"
> "gnus-read-active-file-1"
> "gnus-read-active-file"
> ---Type <return> to continue, or q <return> to quit---
> "gnus-group-get-new-news"
> "call-interactively"

-- 
Leon

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-07 20:58         ` Ralf Angeli
  2006-04-09  1:17           ` Leon
@ 2006-04-17 20:35           ` Ralf Angeli
  2006-04-18  1:46             ` Leon
  2006-04-19 20:18             ` Ralf Angeli
  1 sibling, 2 replies; 58+ messages in thread
From: Ralf Angeli @ 2006-04-17 20:35 UTC (permalink / raw)


* Ralf Angeli (2006-04-07) writes:

> * Kim F. Storm (2006-04-06) writes:
>
>> then examine the stack and other stuff to see
>> where it hangs, e.g. as a first step, send us
>> the output from these commands:
[...]
> (gdb) bt
> #0  0xffffe410 in __kernel_vsyscall ()
> #1  0xa77f7d2d in select () from /lib/tls/i686/cmov/libc.so.6
> #2  0x0819228b in wait_reading_process_output (time_limit=0, microsecs=100000, 
>     read_kbd=0, do_display=0, wait_for_cell=137558217, wait_proc=0x8b7ada8, 
>     just_wait_proc=0) at process.c:4494
> #3  0x08193f5a in Faccept_process_output (process=146255276, seconds=0, 
>     millisec=100, just_this_one=137558217) at process.c:3893
[...]
> Lisp Backtrace:
> "accept-process-output"
> "imap-wait-for-tag"
> "nnimap-retrieve-groups"
> "gnus-retrieve-groups"

Is there anything else I can do to help debugging this?

I don't have the original report, so I don't know under which
circumstances the hang happens there.  In my case it happens if I
connect to the internet via modem, open an encrypted connection to an
IMAP server, cut the internet connection, connect to the internet
again, and try to connect to the IMAP server again.  I am not sure if
this is a problem of Emacs, the programs used for opening the
connection to the server, or the kernel.  I tried it now with openssl
s_client, starttls, and gnutls-cli.  All three behave identically on
GNU/Linux, i.e. the hang happens with all of them.

BTW, in contrast to Emacs on GNU/Linux, the Windows port of Emacs does
not hang.  Perhaps this information helps identifying the cause.

-- 
Ralf

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-17 20:35           ` Ralf Angeli
@ 2006-04-18  1:46             ` Leon
  2006-04-19 20:18               ` Ralf Angeli
  2006-04-19 20:18             ` Ralf Angeli
  1 sibling, 1 reply; 58+ messages in thread
From: Leon @ 2006-04-18  1:46 UTC (permalink / raw)


Ralf Angeli <angeli@iwi.uni-sb.de> writes:

> * Ralf Angeli (2006-04-07) writes:
>
>> * Kim F. Storm (2006-04-06) writes:
>>
>>> then examine the stack and other stuff to see
>>> where it hangs, e.g. as a first step, send us
>>> the output from these commands:
> [...]
>> (gdb) bt
>> #0  0xffffe410 in __kernel_vsyscall ()
>> #1  0xa77f7d2d in select () from /lib/tls/i686/cmov/libc.so.6
>> #2  0x0819228b in wait_reading_process_output (time_limit=0, microsecs=100000, 
>>     read_kbd=0, do_display=0, wait_for_cell=137558217, wait_proc=0x8b7ada8, 
>>     just_wait_proc=0) at process.c:4494
>> #3  0x08193f5a in Faccept_process_output (process=146255276, seconds=0, 
>>     millisec=100, just_this_one=137558217) at process.c:3893
> [...]
>> Lisp Backtrace:
>> "accept-process-output"
>> "imap-wait-for-tag"
>> "nnimap-retrieve-groups"
>> "gnus-retrieve-groups"
>
> Is there anything else I can do to help debugging this?
>
> I don't have the original report, so I don't know under which
> circumstances the hang happens there.  In my case it happens if I
> connect to the internet via modem, open an encrypted connection to an
> IMAP server, cut the internet connection, connect to the internet
> again, and try to connect to the IMAP server again.  I am not sure if
> this is a problem of Emacs, the programs used for opening the
> connection to the server, or the kernel.  I tried it now with openssl
> s_client, starttls, and gnutls-cli.  All three behave identically on
> GNU/Linux, i.e. the hang happens with all of them.
>
> BTW, in contrast to Emacs on GNU/Linux, the Windows port of Emacs does
> not hang.  Perhaps this information helps identifying the cause.

Hi Ralf,

Here are steps to reproduce the bug.

1. Add the following lines to ~/.gnus.el
    (gnus-demon-add-handler 'gnus-group-get-new-news 2 t)
    (gnus-demon-init)
2. fire up gnus
3. cut the network

Then when demon tries to get new News, emacs hangs. What's outrageous is
Ctrl-g won't be able to stop the process.

If you put the network back on, emacs will come to life again.

Regards,
-- 
Leon
Emacs: GNU Emacs 23.0.0.1 (i686-pc-linux-gnu, GTK+ Version 2.8.17) of
2006-04-18

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-17 20:35           ` Ralf Angeli
  2006-04-18  1:46             ` Leon
@ 2006-04-19 20:18             ` Ralf Angeli
  2006-04-19 20:51               ` Stefan Monnier
                                 ` (2 more replies)
  1 sibling, 3 replies; 58+ messages in thread
From: Ralf Angeli @ 2006-04-19 20:18 UTC (permalink / raw)


* Ralf Angeli (2006-04-17) writes:

>> Lisp Backtrace:
>> "accept-process-output"
>> "imap-wait-for-tag"
>> "nnimap-retrieve-groups"
>> "gnus-retrieve-groups"
>
> Is there anything else I can do to help debugging this?
>
> I don't have the original report, so I don't know under which
> circumstances the hang happens there.  In my case it happens if I
> connect to the internet via modem, open an encrypted connection to an
> IMAP server, cut the internet connection, connect to the internet
> again, and try to connect to the IMAP server again.  I am not sure if
> this is a problem of Emacs, the programs used for opening the
> connection to the server, or the kernel.  I tried it now with openssl
> s_client, starttls, and gnutls-cli.  All three behave identically on
> GNU/Linux, i.e. the hang happens with all of them.
>
> BTW, in contrast to Emacs on GNU/Linux, the Windows port of Emacs does
> not hang.  Perhaps this information helps identifying the cause.

After some messing around I found the difference between between both
cases.  Under Windows the process (e.g. openssl s_client) dies as soon
as the modem connection is closed while on GNU/Linux it is kept alive.
That means after reconnecting to the internet under Windows a new
process is started which has no problem communicating to the server
while on GNU/Linux the old one is reused which obviously cannot cope
with the new internet connection.

I am not sure what the right course of action on GNU/Linux would be to
remedy the problem.  Should programs like openssl die when the
internet connection is being closed?  Or renegotiate a connection?
Should Emacs kill the respective processes if there is no answer after
a certain amount of time and start new ones?  I guess the latter
suggestion is not sensible because Emacs does not know why there is no
answer.  It could as well be that the server is down.

For now, I think, I can work around this problem by writing a script
which closes the internet connection as well as kills all openssl (and
similar) processes.

-- 
Ralf

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-18  1:46             ` Leon
@ 2006-04-19 20:18               ` Ralf Angeli
  2006-04-20  1:19                 ` Leon
  0 siblings, 1 reply; 58+ messages in thread
From: Ralf Angeli @ 2006-04-19 20:18 UTC (permalink / raw)


* Leon (2006-04-18) writes:

> Here are steps to reproduce the bug.
>
> 1. Add the following lines to ~/.gnus.el
>     (gnus-demon-add-handler 'gnus-group-get-new-news 2 t)
>     (gnus-demon-init)
> 2. fire up gnus
> 3. cut the network
>
> Then when demon tries to get new News, emacs hangs. What's outrageous is
> Ctrl-g won't be able to stop the process.
>
> If you put the network back on, emacs will come to life again.

Hm, I cannot reproduce this problem when I shut down a PPP connection.
Maybe this only happens if the interface is still available.

-- 
Ralf

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-19 20:18             ` Ralf Angeli
@ 2006-04-19 20:51               ` Stefan Monnier
  2006-04-19 21:13                 ` Ralf Angeli
  2006-04-20 18:05               ` Gregory Novak
  2006-08-22 11:44               ` Kim F. Storm
  2 siblings, 1 reply; 58+ messages in thread
From: Stefan Monnier @ 2006-04-19 20:51 UTC (permalink / raw)
  Cc: emacs-devel

>>> Lisp Backtrace:
>>> "accept-process-output"
>>> "imap-wait-for-tag"
>>> "nnimap-retrieve-groups"
>>> "gnus-retrieve-groups"
>> 
>> Is there anything else I can do to help debugging this?
[...]
> After some messing around I found the difference between between both
> cases.  Under Windows the process (e.g. openssl s_client) dies as soon
> as the modem connection is closed while on GNU/Linux it is kept alive.
[...]
> I am not sure what the right course of action on GNU/Linux would be to
> remedy the problem.  Should programs like openssl die when the
> internet connection is being closed?  Or renegotiate a connection?

Note that even if openssl doesn't die and hangs, it shouldn't cause Emacs
to freeze.  I.e. it is important to make sure that C-g works.


        Stefan

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-19 20:51               ` Stefan Monnier
@ 2006-04-19 21:13                 ` Ralf Angeli
  0 siblings, 0 replies; 58+ messages in thread
From: Ralf Angeli @ 2006-04-19 21:13 UTC (permalink / raw)


* Stefan Monnier (2006-04-19) writes:

> Note that even if openssl doesn't die and hangs, it shouldn't cause Emacs
> to freeze.  I.e. it is important to make sure that C-g works.

In my case `C-g' works.  Sorry for not making this clear beforehand.
It's Leon's test case where `C-g' fails.  I just thought they might be
related because the backtraces looked somewhat similar.  Unfortunately
I cannot reproduce Leon's problem at the moment for getting a
backtrace with debug information.

-- 
Ralf

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-19 20:18               ` Ralf Angeli
@ 2006-04-20  1:19                 ` Leon
  0 siblings, 0 replies; 58+ messages in thread
From: Leon @ 2006-04-20  1:19 UTC (permalink / raw)


Ralf Angeli <angeli@iwi.uni-sb.de> writes:

> * Leon (2006-04-18) writes:
>
>> Here are steps to reproduce the bug.
>>
>> 1. Add the following lines to ~/.gnus.el
>>     (gnus-demon-add-handler 'gnus-group-get-new-news 2 t)
>>     (gnus-demon-init)
>> 2. fire up gnus
>> 3. cut the network
>>
>> Then when demon tries to get new News, emacs hangs. What's outrageous is
>> Ctrl-g won't be able to stop the process.
>>
>> If you put the network back on, emacs will come to life again.
>
> Hm, I cannot reproduce this problem when I shut down a PPP connection.
> Maybe this only happens if the interface is still available.

Hi Ralf,

I'm using static ip in a college LAN. I cut the network by
`/etc/init.d/network stop'. I can reproduce this bug 100% sure.

Is it necessary for me to submit a backtrace? I used to do the install
with `make install INSTALL_STRIP="-s"'. Is this the reason my
backtrace didn't contain debug info?

Thank you for your effort in fixing this bug.
-- 
Leon

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-19 20:18             ` Ralf Angeli
  2006-04-19 20:51               ` Stefan Monnier
@ 2006-04-20 18:05               ` Gregory Novak
  2006-04-24  0:41                 ` Kim F. Storm
  2006-08-22 11:44               ` Kim F. Storm
  2 siblings, 1 reply; 58+ messages in thread
From: Gregory Novak @ 2006-04-20 18:05 UTC (permalink / raw)


Ralf Angeli <angeli@iwi.uni-sb.de> writes:
> After some messing around I found the difference between between both
> cases.  Under Windows the process (e.g. openssl s_client) dies as soon
> as the modem connection is closed while on GNU/Linux it is kept alive.
> That means after reconnecting to the internet under Windows a new
> process is started which has no problem communicating to the server
> while on GNU/Linux the old one is reused which obviously cannot cope
> with the new internet connection.

I just wanted to add a bit of my own experience to this.  I use Gnus
to read mail under Emacs 21.4 and My IMAP server seems to be fond of
closing the connection after a relatively short period of inactivity.
This leads to the behavior noted -- Gnus seems to hang but C-g works.
I usually deal with this by quitting and restarting Gnus one or two
times, or else searching for the gnutls process and killing it from
the command line.  Perhaps there could be a short timeout (like 10
seconds) after which Emacs asks "The connection looks like it might be
dead--kill it and start a new one? (y/n)"

Most of my Emacs work is done using a recent CVS build of the Carbon
port.  I used to read mail with Gnus using this copy of Emacs, but I
_have_ experienced hangs that are unbreakable with C-g.  This was
sufficiently annoying that I just run the 21.4 version of Emacs for
mail and nothing else.  Under 21.4, I've never experienced an
unbreakable hang in Gnus.

All of this is on OS X 10.4 using the Fink build of Emacs 21.4 and
some (more or less randomly updated) Carbon build of Emacs from CVS.

Greg

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-20 18:05               ` Gregory Novak
@ 2006-04-24  0:41                 ` Kim F. Storm
  0 siblings, 0 replies; 58+ messages in thread
From: Kim F. Storm @ 2006-04-24  0:41 UTC (permalink / raw)
  Cc: emacs-devel

Gregory Novak <novak@ucolick.org> writes:

> Ralf Angeli <angeli@iwi.uni-sb.de> writes:
>> After some messing around I found the difference between between both
>> cases.  Under Windows the process (e.g. openssl s_client) dies as soon
>> as the modem connection is closed while on GNU/Linux it is kept alive.
>> That means after reconnecting to the internet under Windows a new
>> process is started which has no problem communicating to the server
>> while on GNU/Linux the old one is reused which obviously cannot cope
>> with the new internet connection.
>
> I just wanted to add a bit of my own experience to this.  I use Gnus
> to read mail under Emacs 21.4 and My IMAP server seems to be fond of
> closing the connection after a relatively short period of inactivity.
> This leads to the behavior noted -- Gnus seems to hang but C-g works.
> I usually deal with this by quitting and restarting Gnus one or two
> times, or else searching for the gnutls process and killing it from
> the command line.  Perhaps there could be a short timeout (like 10
> seconds) after which Emacs asks "The connection looks like it might be
> dead--kill it and start a new one? (y/n)"
>
> Most of my Emacs work is done using a recent CVS build of the Carbon
> port.  I used to read mail with Gnus using this copy of Emacs, but I
> _have_ experienced hangs that are unbreakable with C-g.  This was
> sufficiently annoying that I just run the 21.4 version of Emacs for
> mail and nothing else.  Under 21.4, I've never experienced an
> unbreakable hang in Gnus.
>
> All of this is on OS X 10.4 using the Fink build of Emacs 21.4 and
> some (more or less randomly updated) Carbon build of Emacs from CVS.

I just got into a similar Gnus "hang", but didn't see anything really
odd about it -- and C-g eventually got me going again.

Could just be the news server which had a hick-up.

Program received signal SIGTSTP, Stopped (user).
0xffffe002 in ?? ()
(gdb) bt
#0  0xffffe002 in ?? ()
#1  0x081c9d37 in Faccept_process_output (process=156753284, seconds=0,
    millisec=800, just_this_one=137881521) at process.c:3899
#2  0x0818df5f in Ffuncall (nargs=4, args=0xbfffbef0) at eval.c:2912
#3  0x081c212d in Fbyte_code (bytestr=144407107, vector=144409220, maxdepth=56)
    at bytecode.c:694
#4  0x0818e654 in funcall_lambda (fun=144409348, nargs=1,
    arg_vector=0xbfffc0d4) at eval.c:3089
#5  0x0818e09c in Ffuncall (nargs=2, args=0xbfffc0d0) at eval.c:2948
#6  0x081c212d in Fbyte_code (bytestr=145793651, vector=145788340, maxdepth=40)
    at bytecode.c:694
#7  0x0818e654 in funcall_lambda (fun=145750972, nargs=1,
    arg_vector=0xbfffc2b4) at eval.c:3089
#8  0x0818e09c in Ffuncall (nargs=2, args=0xbfffc2b0) at eval.c:2948
#9  0x081c212d in Fbyte_code (bytestr=144475355, vector=144617460, maxdepth=48)
    at bytecode.c:694
#10 0x0818d1f7 in Feval (form=145259293) at eval.c:2248
#11 0x0818bc59 in internal_lisp_condition_case (var=138208761,
    bodyform=145259293, handlers=145254109) at eval.c:1419
#12 0x081c2ab1 in Fbyte_code (bytestr=144475323, vector=145430532, maxdepth=64)
    at bytecode.c:884
#13 0x0818e654 in funcall_lambda (fun=146115068, nargs=3,
    arg_vector=0xbfffc7d4) at eval.c:3089
#14 0x0818e09c in Ffuncall (nargs=4, args=0xbfffc7d0) at eval.c:2948
#15 0x081c212d in Fbyte_code (bytestr=146197051, vector=145492420, maxdepth=40)
    at bytecode.c:694
#16 0x0818d1f7 in Feval (form=145206317) at eval.c:2248
#17 0x0818bc59 in internal_lisp_condition_case (var=137881521,
    bodyform=145206317, handlers=145206245) at eval.c:1419
#18 0x081c2ab1 in Fbyte_code (bytestr=146197019, vector=145509540, maxdepth=32)
    at bytecode.c:884
#19 0x0818d1f7 in Feval (form=145208061) at eval.c:2248
#20 0x0818b7fe in internal_catch (tag=144451065, func=0x818cd4b <Feval>,
    arg=145208061) at eval.c:1212
#21 0x081c2a46 in Fbyte_code (bytestr=146196827, vector=144411020, maxdepth=24)
    at bytecode.c:869
#22 0x0818e654 in funcall_lambda (fun=145512148, nargs=4,
    arg_vector=0xbfffcfd4) at eval.c:3089
#23 0x0818e09c in Ffuncall (nargs=5, args=0xbfffcfd0) at eval.c:2948
#24 0x081c212d in Fbyte_code (bytestr=145991619, vector=145994684, maxdepth=40)
    at bytecode.c:694
#25 0x0818e654 in funcall_lambda (fun=145994844, nargs=3,
    arg_vector=0xbfffd1b4) at eval.c:3089
#26 0x0818e09c in Ffuncall (nargs=4, args=0xbfffd1b0) at eval.c:2948
#27 0x081c212d in Fbyte_code (bytestr=146629483, vector=146597396, maxdepth=48)
---Type <return> to continue, or q <return> to quit---
    at bytecode.c:694
#28 0x0818e654 in funcall_lambda (fun=146597804, nargs=2,
    arg_vector=0xbfffd394) at eval.c:3089
#29 0x0818e09c in Ffuncall (nargs=3, args=0xbfffd390) at eval.c:2948
#30 0x081c212d in Fbyte_code (bytestr=146717859, vector=146718684, maxdepth=32)
    at bytecode.c:694
#31 0x0818e654 in funcall_lambda (fun=146719068, nargs=2,
    arg_vector=0xbfffd564) at eval.c:3089
#32 0x0818e09c in Ffuncall (nargs=3, args=0xbfffd560) at eval.c:2948
#33 0x081c212d in Fbyte_code (bytestr=146417523, vector=146421668, maxdepth=32)
    at bytecode.c:694
#34 0x0818e654 in funcall_lambda (fun=146421876, nargs=2,
    arg_vector=0xbfffd734) at eval.c:3089
#35 0x0818e09c in Ffuncall (nargs=3, args=0xbfffd730) at eval.c:2948
#36 0x081c212d in Fbyte_code (bytestr=146435787, vector=146439884, maxdepth=32)
    at bytecode.c:694
#37 0x0818e654 in funcall_lambda (fun=146440060, nargs=1,
    arg_vector=0xbfffd904) at eval.c:3089
#38 0x0818e09c in Ffuncall (nargs=2, args=0xbfffd900) at eval.c:2948
#39 0x081c212d in Fbyte_code (bytestr=145604011, vector=145614828, maxdepth=56)
    at bytecode.c:694
#40 0x0818e654 in funcall_lambda (fun=145615356, nargs=6,
    arg_vector=0xbfffdae4) at eval.c:3089
#41 0x0818e09c in Ffuncall (nargs=7, args=0xbfffdae0) at eval.c:2948
#42 0x081c212d in Fbyte_code (bytestr=145603979, vector=145614372, maxdepth=64)
    at bytecode.c:694
#43 0x0818e654 in funcall_lambda (fun=145614548, nargs=7,
    arg_vector=0xbfffdcc4) at eval.c:3089
#44 0x0818e09c in Ffuncall (nargs=8, args=0xbfffdcc0) at eval.c:2948
#45 0x081c212d in Fbyte_code (bytestr=145700403, vector=145675132, maxdepth=64)
    at bytecode.c:694
#46 0x0818e654 in funcall_lambda (fun=145675348, nargs=3,
    arg_vector=0xbfffdea4) at eval.c:3089
#47 0x0818e09c in Ffuncall (nargs=4, args=0xbfffdea0) at eval.c:2948
#48 0x081c212d in Fbyte_code (bytestr=149159459, vector=149061108, maxdepth=32)
    at bytecode.c:694
#49 0x0818e654 in funcall_lambda (fun=149061260, nargs=1,
    arg_vector=0xbfffe0a4) at eval.c:3089
#50 0x0818e09c in Ffuncall (nargs=2, args=0xbfffe0a0) at eval.c:2948
#51 0x08189b50 in Fcall_interactively (function=146253745,
    record_flag=137881521, keys=137922020) at callint.c:884
#52 0x08120ac3 in Fcommand_execute (cmd=146253745, record_flag=137881521,
    keys=137881521, special=137881521) at keyboard.c:9760
#53 0x081141d6 in command_loop_1 () at keyboard.c:1791
#54 0x0818bd8d in internal_condition_case (bfun=0x8112e03 <command_loop_1>,
---Type <return> to continue, or q <return> to quit---
    handlers=137926161, hfun=0x8112948 <cmd_error>) at eval.c:1474
#55 0x08112c7b in command_loop_2 () at keyboard.c:1328
#56 0x0818b7fe in internal_catch (tag=137922393,
    func=0x8112c5c <command_loop_2>, arg=137881521) at eval.c:1212
#57 0x08112c2e in command_loop () at keyboard.c:1307
#58 0x081126c7 in recursive_edit_1 () at keyboard.c:1000
#59 0x08112808 in Frecursive_edit () at keyboard.c:1061
#60 0x08111111 in main (argc=3, argv=0xbfffe9a4) at emacs.c:1789
#61 0x42015574 in __libc_start_main () from /lib/tls/libc.so.6

Lisp Backtrace:
"accept-process-output" (0x957dd84)
"nnheader-accept-process-output" (0x957dd84)
"nntp-accept-process-output" (0x957dd84)
"byte-code" (0x89c84db)
"nntp-send-command-and-decode" (0x8b6ca4b)
"byte-code" (0x8b6ca3b)
"byte-code" (0x8b6ca1b)
"nntp-request-article" (0x46bc8)
"gnus-request-article" (0x46bc8)
"gnus-request-article-this-buffer" (0x46bc8)
"gnus-article-prepare" (0x46bc8)
"gnus-summary-display-article" (0x46bc8)
"gnus-summary-goto-article" (0x46bc8)
"gnus-summary-read-group-1" (0x8d4fe53)
"gnus-summary-read-group" (0x8d4fe53)
"gnus-group-read-group" (0x837e7b1)
"gnus-topic-read-group" (0x837e7b1)
"call-interactively" (0x8b7a7b1)
(gdb) up
#1  0x081c9d37 in Faccept_process_output (process=156753284, seconds=0,
    millisec=800, just_this_one=137881521) at process.c:3899
3899      return
(gdb) do
#0  0xffffe002 in ?? ()
(gdb) up
#1  0x081c9d37 in Faccept_process_output (process=156753284, seconds=0,
    millisec=800, just_this_one=137881521) at process.c:3899
3899      return
(gdb) list
3894            secs = -1, usecs = 0;
3895        }
3896      else
3897        secs = NILP (process) ? -1 : 0;
3898
3899      return
3900        (wait_reading_process_output (secs, usecs, 0, 0,
3901                                      Qnil,
3902                                      !NILP (process) ? XPROCESS (process) : NULL,
3903                                      NILP (just_this_one) ? 0 :
(gdb) pp just_this_one
nil


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-04-19 20:18             ` Ralf Angeli
  2006-04-19 20:51               ` Stefan Monnier
  2006-04-20 18:05               ` Gregory Novak
@ 2006-08-22 11:44               ` Kim F. Storm
  2006-08-23 14:45                 ` Richard Stallman
  2 siblings, 1 reply; 58+ messages in thread
From: Kim F. Storm @ 2006-08-22 11:44 UTC (permalink / raw)
  Cc: emacs-devel

Ralf Angeli <angeli@iwi.uni-sb.de> writes:

> * Ralf Angeli (2006-04-17) writes:
>
>>> Lisp Backtrace:
>>> "accept-process-output"
>>> "imap-wait-for-tag"
>>> "nnimap-retrieve-groups"
>>> "gnus-retrieve-groups"
>>
>> BTW, in contrast to Emacs on GNU/Linux, the Windows port of Emacs does
>> not hang.  Perhaps this information helps identifying the cause.
>
> After some messing around I found the difference between between both
> cases.  Under Windows the process (e.g. openssl s_client) dies as soon
> as the modem connection is closed while on GNU/Linux it is kept alive.
> That means after reconnecting to the internet under Windows a new
> process is started which has no problem communicating to the server
> while on GNU/Linux the old one is reused which obviously cannot cope
> with the new internet connection.

But Emacs should still respond to C-g in this case ... or?


> I am not sure what the right course of action on GNU/Linux would be to
> remedy the problem.  Should programs like openssl die when the
> internet connection is being closed?  Or renegotiate a connection?
> Should Emacs kill the respective processes if there is no answer after
> a certain amount of time and start new ones?  I guess the latter
> suggestion is not sensible because Emacs does not know why there is no
> answer.  It could as well be that the server is down.

Emacs cannot do that in general -- but Gnus may know when it makes
sense to kill the process and start a new one....

I see similar problems connection to one of the news servers at my ISP.
I just interrupt Gnus, and make anoter refresh -- I guess Gnus could
just as well do this automatically if there is no response from the
server it used last time. 

> For now, I think, I can work around this problem by writing a script
> which closes the internet connection as well as kills all openssl (and
> similar) processes.

Could you write something for PROBLEMS on the matter?

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-22 11:44               ` Kim F. Storm
@ 2006-08-23 14:45                 ` Richard Stallman
  2006-08-23 15:00                   ` Kim F. Storm
                                     ` (2 more replies)
  0 siblings, 3 replies; 58+ messages in thread
From: Richard Stallman @ 2006-08-23 14:45 UTC (permalink / raw)
  Cc: angeli, emacs-devel

    > That means after reconnecting to the internet under Windows a new
    > process is started which has no problem communicating to the server
    > while on GNU/Linux the old one is reused which obviously cannot cope
    > with the new internet connection.

    But Emacs should still respond to C-g in this case ... or?

Yes--if C-g fails to work, it is a bug.

So we need to determine WHY it fails to work.
Perhaps wait_reading_process_output, when called on behalf
of accept-process-output, fails to take note of quit-flag.

Can someone please investigate whether that is true?

    > I am not sure what the right course of action on GNU/Linux would be to
    > remedy the problem.  Should programs like openssl die when the
    > internet connection is being closed?  Or renegotiate a connection?

I don't know whether openssl can keep working when a phone connection
drops and is reestablished, but I have seen scp connections keep
working when I removed and then reinserted a Wifi card.  These cases
are not the same but they are analogous; if the openssl/phone case
does not work now, it ought to work.

    I see similar problems connection to one of the news servers at my ISP.
    I just interrupt Gnus, and make anoter refresh -- I guess Gnus could
    just as well do this automatically if there is no response from the
    server it used last time. 

I don't entirely understand that proposal.  Does it aim to work around
the failure of C-g?  Does it aim to DTRT without need to type C-g?
If openssl could resume its connection when you reconnect the phone line,
would that make this proposal unnecessary?  Would that make this proposal
undesirable or incorrect?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-23 14:45                 ` Richard Stallman
@ 2006-08-23 15:00                   ` Kim F. Storm
  2006-08-25  7:43                     ` Richard Stallman
  2006-08-23 20:51                   ` Stefan Monnier
  2006-08-24  3:17                   ` Bob Rogers
  2 siblings, 1 reply; 58+ messages in thread
From: Kim F. Storm @ 2006-08-23 15:00 UTC (permalink / raw)
  Cc: angeli, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I see similar problems connection to one of the news servers at my ISP.
>     I just interrupt Gnus, and make anoter refresh -- I guess Gnus could
>     just as well do this automatically if there is no response from the
>     server it used last time. 
>
> I don't entirely understand that proposal.  Does it aim to work around
> the failure of C-g?  Does it aim to DTRT without need to type C-g?
> If openssl could resume its connection when you reconnect the phone line,
> would that make this proposal unnecessary?  Would that make this proposal
> undesirable or incorrect?

The proposal is simply that Gnus should detect a stale connection to
an NNTP server -- if the server doesn't respond in a timely manner, it
should drop the connection and open a new one.  

As it is now, when I ask Gnus to look for new news, it sometimes
"hang" for a long time waiting for the news server to respond -- since
I'm impatient, I interrupt this with C-g (it works!) which seems to
cause Gnus to close the connection. Then I simply repeat the "get new
news" command manually.  I think Gnus could do this automatically for me!

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-23 14:45                 ` Richard Stallman
  2006-08-23 15:00                   ` Kim F. Storm
@ 2006-08-23 20:51                   ` Stefan Monnier
  2006-08-24  3:17                   ` Bob Rogers
  2 siblings, 0 replies; 58+ messages in thread
From: Stefan Monnier @ 2006-08-23 20:51 UTC (permalink / raw)
  Cc: emacs-devel, angeli, Kim F. Storm

> Yes--if C-g fails to work, it is a bug.

> So we need to determine WHY it fails to work.
> Perhaps wait_reading_process_output, when called on behalf
> of accept-process-output, fails to take note of quit-flag.

I use the patch below to catch such problems.


        Stefan


--- orig/src/process.c
+++ mod/src/process.c
@@ -4255,6 +4256,9 @@
   FD_ZERO (&Connecting);
 #endif
 
+  if (time_limit == 0 && PROCESSP (read_kbd) && !NILP (Vinhibit_quit))
+    error ("Blocking call to accept-process-output with quit inhibited!!");
+
   /* If wait_proc is a process to watch, set wait_channel accordingly.  */
   if (wait_proc != NULL)
     wait_channel = XINT (wait_proc->infd);

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-23 14:45                 ` Richard Stallman
  2006-08-23 15:00                   ` Kim F. Storm
  2006-08-23 20:51                   ` Stefan Monnier
@ 2006-08-24  3:17                   ` Bob Rogers
  2006-08-24  7:51                     ` Kim F. Storm
  2006-08-25  7:44                     ` Richard Stallman
  2 siblings, 2 replies; 58+ messages in thread
From: Bob Rogers @ 2006-08-24  3:17 UTC (permalink / raw)
  Cc: emacs-devel, angeli, Kim F. Storm

   From: Richard Stallman <rms@gnu.org>
   Date: Wed, 23 Aug 2006 10:45:30 -0400

       > That means after reconnecting to the internet under Windows a new
       > process is started which has no problem communicating to the server
       > while on GNU/Linux the old one is reused which obviously cannot cope
       > with the new internet connection.

       . . .

       > I am not sure what the right course of action on GNU/Linux would be to
       > remedy the problem.  Should programs like openssl die when the
       > internet connection is being closed?  Or renegotiate a connection?

   I don't know whether openssl can keep working when a phone connection
   drops and is reestablished, but I have seen scp connections keep
   working when I removed and then reinserted a Wifi card.  These cases
   are not the same but they are analogous; if the openssl/phone case
   does not work now, it ought to work.

The problem is fundamental to dialups (and my apologies if this is old
hat, and by "it ought to work" you really meant "Gnus" and not
"openssl").

    For a wireless card or cable modem, the DHCP server remembers your
hardware address, which it uses to give you the IP address you had
before, so established TCP connections resume working as soon as the
interface comes back up.  When you redial, the computer attached to the
modem bank has no clue who are (and might even be a different computer
than before), so you usually get a different IP address, making TCP
connections established with the old IP address unusable.  Either way,
OpenSSL probably isn't even aware of all this commotion in the lower
layers of the networking stack.

   So you might consider this a bug in GNU/Linux that it doesn't close
open connections for old addresses.  However, it may not be possible to
decide that an old address is truly and forevermore gone, and so (I am
guessing) they figured that it is more robust to let higher-level
connection timeout mechanisms come into play.  (It may even be specified
that way, but I don't know the relevant RFCs to check.)  By that
interpretation, the observed difference in behavior is really a Windows
bug.  (And it wouldn't be the first time MS chose user convenience over
robustness, now, would it?  ;-)

       I see similar problems connection to one of the news servers at my ISP.
       I just interrupt Gnus, and make anoter refresh -- I guess Gnus could
       just as well do this automatically if there is no response from the
       server it used last time.

   I don't entirely understand that proposal . . .
   If openssl could resume its connection when you reconnect the phone line,
   would that make this proposal unnecessary?  Would that make this proposal
   undesirable or incorrect?

Would it be possible for Gnus to request a timeout when invoking
openssl?  I'm afraid I don't know enough about either to make a more
detailed suggestion, let alone whether this approach could work.  (And
http://www.openssl.org/docs/apps/s_client.html doesn't show any
timeout-related option, which is not hopeful.)

   If not, then restarting the connection after a suitable timeout is
probably the best available technology.

					-- Bob Rogers
					   [who sometimes pretends to be
					   a network engineer, often
					   with success.]
					   http://rgrjr.dyndns.org/

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-24  3:17                   ` Bob Rogers
@ 2006-08-24  7:51                     ` Kim F. Storm
  2006-08-25  1:01                       ` Bob Rogers
  2006-08-25 20:23                       ` Richard Stallman
  2006-08-25  7:44                     ` Richard Stallman
  1 sibling, 2 replies; 58+ messages in thread
From: Kim F. Storm @ 2006-08-24  7:51 UTC (permalink / raw)
  Cc: angeli, rms, emacs-devel

Bob Rogers <rogers-emacs@rgrjr.dyndns.org> writes:

> Would it be possible for Gnus to request a timeout when invoking
> openssl?  I'm afraid I don't know enough about either to make a more
> detailed suggestion, let alone whether this approach could work.  (And
> http://www.openssl.org/docs/apps/s_client.html doesn't show any
> timeout-related option, which is not hopeful.)


>    If not, then restarting the connection after a suitable timeout is
> probably the best available technology.

That's what I suggested Gnus should do, i.e.

Start a timer when it tries to open/use the connection.
If connection is opened/response is received, cancel the timer.
If timer runs out, close the connection and try again.


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-24  7:51                     ` Kim F. Storm
@ 2006-08-25  1:01                       ` Bob Rogers
  2006-08-25 20:23                       ` Richard Stallman
  1 sibling, 0 replies; 58+ messages in thread
From: Bob Rogers @ 2006-08-25  1:01 UTC (permalink / raw)
  Cc: angeli, rms, emacs-devel

   From: storm@cua.dk (Kim F. Storm)
   Date: Thu, 24 Aug 2006 09:51:49 +0200

   Bob Rogers <rogers-emacs@rgrjr.dyndns.org> writes:

   >    If not, then restarting the connection after a suitable timeout is
   > probably the best available technology.

   That's what I suggested Gnus should do . . .

I assumed readers would know that I was seconding your original
suggestion.  My apologies if this was not clear.

					-- Bob

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-23 15:00                   ` Kim F. Storm
@ 2006-08-25  7:43                     ` Richard Stallman
  2006-08-25  8:15                       ` Kim F. Storm
  2006-08-25  8:56                       ` Jason Rumney
  0 siblings, 2 replies; 58+ messages in thread
From: Richard Stallman @ 2006-08-25  7:43 UTC (permalink / raw)
  Cc: angeli, emacs-devel

    The proposal is simply that Gnus should detect a stale connection to
    an NNTP server -- if the server doesn't respond in a timely manner, it
    should drop the connection and open a new one.  

It depends on the precise definition of "stale".  If it would include
a connection made via WiFi when the card has been pulled out, then it
would create a bug.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-24  3:17                   ` Bob Rogers
  2006-08-24  7:51                     ` Kim F. Storm
@ 2006-08-25  7:44                     ` Richard Stallman
  1 sibling, 0 replies; 58+ messages in thread
From: Richard Stallman @ 2006-08-25  7:44 UTC (permalink / raw)
  Cc: emacs-devel, angeli, storm

      When you redial, the computer attached to the
    modem bank has no clue who are (and might even be a different computer
    than before), so you usually get a different IP address, making TCP
    connections established with the old IP address unusable.  Either way,
    OpenSSL probably isn't even aware of all this commotion in the lower
    layers of the networking stack.

That being so, if you're using WiFi then OpenSSL should not die when
the connection drops, but if you're using PPP, then OpenSSL should
die when the connection drops.

Emacs is the wrong place to make the decision.  Emacs is not in a
position to know whether the connection was by phone or by wireless.
If Gnus could impose a timeout, it would fix the problem for phone
connections and cause a spurious problem for wireless.

How can we make the right thing happen in both cases?  Some part of
the system has to be responsible for making the right thing happen in
each of these cases.  Somehow OpenSSL needs to be able to determine
that a low-level connection is irrevocably broken, so it can die.
This may require changes in Linux and GNU Libc as well as OpenSSL,
but I don't know.

We need to report this to the people who can fix it right.

In the mean time, the solution for Emacs is to make sure C-g works.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-25  7:43                     ` Richard Stallman
@ 2006-08-25  8:15                       ` Kim F. Storm
  2006-08-26 10:08                         ` Richard Stallman
  2006-08-25  8:56                       ` Jason Rumney
  1 sibling, 1 reply; 58+ messages in thread
From: Kim F. Storm @ 2006-08-25  8:15 UTC (permalink / raw)
  Cc: angeli, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     The proposal is simply that Gnus should detect a stale connection to
>     an NNTP server -- if the server doesn't respond in a timely manner, it
>     should drop the connection and open a new one.  
>
> It depends on the precise definition of "stale".  If it would include
> a connection made via WiFi when the card has been pulled out, then it
> would create a bug.

I don't follow.

I'm talking about Gnus detecting that the TCP connection to the NNTP
server is "stale" by putting a timeout on the response.  
I.e. I don't know about an underlying "physical" WiFi or PPP connection.

You say that Emacs _must_ hang until you decide to put the WiFi card
back in or you hit C-g to completely terminate the fetching of new
articles and messages (from any server)?

Why can't Gnus decide that "hey I've waited 15 seconds for a response,
so let's stop this nonsense and try again"?  And if the second attempt
fails as well, conclude that that particular Mail or NNTP server is not
reachable at this time and go on to other business?

In my setup, I don't use openssl or any such fancy stuff -- which may
be why I'm able to interrupt the "stale connection" with C-g.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-25  7:43                     ` Richard Stallman
  2006-08-25  8:15                       ` Kim F. Storm
@ 2006-08-25  8:56                       ` Jason Rumney
  1 sibling, 0 replies; 58+ messages in thread
From: Jason Rumney @ 2006-08-25  8:56 UTC (permalink / raw)
  Cc: emacs-devel, angeli, Kim F. Storm

Richard Stallman wrote:
>     The proposal is simply that Gnus should detect a stale connection to
>     an NNTP server -- if the server doesn't respond in a timely manner, it
>     should drop the connection and open a new one.  
>
> It depends on the precise definition of "stale".  If it would include
> a connection made via WiFi when the card has been pulled out, then it
> would create a bug.
>   
I don't see how creating a new connection, which will either fail or go 
via another route in the above case, could be considered a bug.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-24  7:51                     ` Kim F. Storm
  2006-08-25  1:01                       ` Bob Rogers
@ 2006-08-25 20:23                       ` Richard Stallman
  1 sibling, 0 replies; 58+ messages in thread
From: Richard Stallman @ 2006-08-25 20:23 UTC (permalink / raw)
  Cc: angeli, rogers-emacs, emacs-devel

    Start a timer when it tries to open/use the connection.
    If connection is opened/response is received, cancel the timer.
    If timer runs out, close the connection and try again.

If Gnus operations that use the connection always involve small
amounts of data, so that restarting one is never a big loss,
then it is ok to implement this strategy.

By contrast, restarting scp every time a connection drops would be a
real disaster with Wifi (compared with resuming the transfer where it
left off).

If one of these Gnus operations can take a long time, then it is like
the scp case, and we must not make Gnus automatically kill it and
restart!

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-25  8:15                       ` Kim F. Storm
@ 2006-08-26 10:08                         ` Richard Stallman
  2006-08-26 21:32                           ` Kim F. Storm
  0 siblings, 1 reply; 58+ messages in thread
From: Richard Stallman @ 2006-08-26 10:08 UTC (permalink / raw)
  Cc: angeli, emacs-devel

    You say that Emacs _must_ hang until you decide to put the WiFi card
    back in or you hit C-g to completely terminate the fetching of new
    articles and messages (from any server)?

Yes, I think so.  It would be a screw if it canceled a long operation
and made me start from the beginning, just because I did not remove
and reinsert the card fast enough to beat the timeout.  What if it took
me 20 seconds to notice that the wireless connection was no longer actually
transferring any data?  That has happened.

    Why can't Gnus decide that "hey I've waited 15 seconds for a response,
    so let's stop this nonsense and try again"?

To cancel the operation and try again from the beginning is ok,
provided that the operation is always fast when it does work.

Basically, what I don't want it to do is this: you have been
transferring for 20 minutes, and then there's a problem, and it starts
over, and you have to redo that first 20 minutes' worth.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-08-26 10:08                         ` Richard Stallman
@ 2006-08-26 21:32                           ` Kim F. Storm
  0 siblings, 0 replies; 58+ messages in thread
From: Kim F. Storm @ 2006-08-26 21:32 UTC (permalink / raw)
  Cc: angeli, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Basically, what I don't want it to do is this: you have been
> transferring for 20 minutes, and then there's a problem, and it starts
> over, and you have to redo that first 20 minutes' worth.

I guess I'm spoiled by having had fast Internet access for years.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
@ 2006-09-04  8:41 Kim F. Storm
  2006-09-05 21:18 ` Chong Yidong
                   ` (2 more replies)
  0 siblings, 3 replies; 58+ messages in thread
From: Kim F. Storm @ 2006-09-04  8:41 UTC (permalink / raw)
  Cc: leon


Here is an interesting backtrace from Leon:

It is hanging (C-g not working) with gnus-demon called
from a timer.  

So I suppose he is using gnus-asynchronous.

Would someone pls. investigate this.


On Sun, 03/09/06 22:19 +0100, Kim F. Storm wrote:

> leon <sdl.web@googlemail.com> writes:
>
>> I have applied the patch to the latest emacs-unicode-2 branch. I see no
>> difference.

The patch in question is this tiny patch from Stefan:

    --- orig/src/process.c
    +++ mod/src/process.c
    @@ -4255,6 +4256,9 @@
       FD_ZERO (&Connecting);
    #endif
    
    +  if (time_limit == 0 && PROCESSP (read_kbd) && !NILP (Vinhibit_quit))
    +    error ("Blocking call to accept-process-output with quit inhibited!!");
    +
       /* If wait_proc is a process to watch, set wait_channel accordingly.  */
       if (wait_proc != NULL)
         wait_channel = XINT (wait_proc->infd);
    

>> emacs still loses reponse and won't be able to restore to normal.
>
> And it doesn't respond to C-g ??

No.

>
>> I have compiled emacs with --enable-debug so if you need more debug info,
>> let me know.
>
> Can you run it under GDB and interrupt it when it is hanging and then
> look at a backtrace to see where it is hanging.

(gdb) bt
#0  0x00b79248 in ___newselect_nocancel () from /lib/libc.so.6
#1  0x08194325 in select_wrapper (n=-514, rfd=0x0, wfd=0xbfcbe478, xfd=0x0, 
    tmo=0xbfcbe5a8) at process.c:4188
#2  0x081975e3 in wait_reading_process_output (time_limit=0, microsecs=100000, 
    read_kbd=0, do_display=0, wait_for_cell=137562313, wait_proc=0xac4b208, 
    just_wait_proc=0) at process.c:4560
#3  0x08199535 in Faccept_process_output (process=180662796, seconds=0, 
    millisec=800, just_this_one=137562313) at process.c:3929
#4  0x081660a1 in Ffuncall (nargs=4, args=0xbfcbe6a0) at eval.c:2992
#5  0x0819103a in Fbyte_code (bytestr=178229091, vector=178231668, maxdepth=56)
    at bytecode.c:679
#6  0x08165aea in funcall_lambda (fun=178231796, nargs=1, 
    arg_vector=0xbfcbe7d4) at eval.c:3169
#7  0x08165ef1 in Ffuncall (nargs=2, args=0xbfcbe7d0) at eval.c:3039
#8  0x0819103a in Fbyte_code (bytestr=180188931, vector=180193340, maxdepth=40)
    at bytecode.c:679
#9  0x08165aea in funcall_lambda (fun=180193524, nargs=1, 
    arg_vector=0xbfcbe904) at eval.c:3169
#10 0x08165ef1 in Ffuncall (nargs=2, args=0xbfcbe900) at eval.c:3039
#11 0x0819103a in Fbyte_code (bytestr=180188979, vector=180193588, maxdepth=48)
    at bytecode.c:679
#12 0x08165aea in funcall_lambda (fun=180193756, nargs=0, 
    arg_vector=0xbfcbea34) at eval.c:3169
#13 0x08165ef1 in Ffuncall (nargs=1, args=0xbfcbea30) at eval.c:3039
#14 0x0819103a in Fbyte_code (bytestr=180130171, vector=180131756, maxdepth=64)
    at bytecode.c:679
#15 0x081655a5 in Feval (form=178650061) at eval.c:2319
#16 0x08164bda in internal_catch (tag=137879609, func=0x81651e0 <Feval>, 
    arg=178650061) at eval.c:1210
#17 0x08190213 in Fbyte_code (bytestr=180130155, vector=180132140, maxdepth=16)
    at bytecode.c:854
#18 0x081655a5 in Feval (form=178650021) at eval.c:2319
#19 0x08167b5f in internal_lisp_condition_case (var=137562313, 
    bodyform=178650021, handlers=178726805) at eval.c:1414
#20 0x0819032d in Fbyte_code (bytestr=180130123, vector=180132268, maxdepth=32)
    at bytecode.c:869
#21 0x081655a5 in Feval (form=178649109) at eval.c:2319
#22 0x08164bda in internal_catch (tag=180098369, func=0x81651e0 <Feval>, 
    arg=178649109) at eval.c:1210
#23 0x08190213 in Fbyte_code (bytestr=180126643, vector=180132356, maxdepth=24)
    at bytecode.c:854
#24 0x08165aea in funcall_lambda (fun=180132548, nargs=2, 
    arg_vector=0xbfcbf124) at eval.c:3169
#25 0x08165ef1 in Ffuncall (nargs=3, args=0xbfcbf120) at eval.c:3039
#26 0x0819103a in Fbyte_code (bytestr=171316339, vector=177631276, maxdepth=56)
    at bytecode.c:679
#27 0x08165aea in funcall_lambda (fun=142210388, nargs=2, 
    arg_vector=0xbfcbf254) at eval.c:3169
#28 0x08165ef1 in Ffuncall (nargs=3, args=0xbfcbf250) at eval.c:3039
#29 0x0819103a in Fbyte_code (bytestr=140306195, vector=139585188, maxdepth=48)
    at bytecode.c:679
#30 0x08165aea in funcall_lambda (fun=139585356, nargs=2, 
    arg_vector=0xbfcbf384) at eval.c:3169
#31 0x08165ef1 in Ffuncall (nargs=3, args=0xbfcbf380) at eval.c:3039
#32 0x0819103a in Fbyte_code (bytestr=141543491, vector=139584628, maxdepth=72)
    at bytecode.c:679
#33 0x08165aea in funcall_lambda (fun=139585124, nargs=2, 
    arg_vector=0xbfcbf460) at eval.c:3169
#34 0x08165ce6 in apply_lambda (fun=139585124, args=171439901, eval_flag=1)
    at eval.c:3093
#35 0x081653c2 in Feval (form=170540757) at eval.c:2355
#36 0x08167b5f in internal_lisp_condition_case (var=137562313, 
    bodyform=170540757, handlers=170540085) at eval.c:1414
#37 0x0819032d in Fbyte_code (bytestr=141543811, vector=177674908, maxdepth=40)
    at bytecode.c:869
#38 0x08165aea in funcall_lambda (fun=177675100, nargs=0, 
    arg_vector=0xbfcbf764) at eval.c:3169
#39 0x08165ef1 in Ffuncall (nargs=1, args=0xbfcbf760) at eval.c:3039
#40 0x0819103a in Fbyte_code (bytestr=140992715, vector=140994924, maxdepth=24)
    at bytecode.c:679
#41 0x08165aea in funcall_lambda (fun=142487924, nargs=0, 
    arg_vector=0xbfcbf884) at eval.c:3169
#42 0x08165ef1 in Ffuncall (nargs=1, args=0xbfcbf880) at eval.c:3039
#43 0x0819103a in Fbyte_code (bytestr=181723363, vector=182785316, maxdepth=8)
    at bytecode.c:679
#44 0x081655a5 in Feval (form=181649869) at eval.c:2319
#45 0x08167b5f in internal_lisp_condition_case (var=137562313, 
    bodyform=181649869, handlers=181649645) at eval.c:1414
#46 0x0819032d in Fbyte_code (bytestr=181723379, vector=146709364, maxdepth=64)
    at bytecode.c:869
#47 0x08165aea in funcall_lambda (fun=146709548, nargs=0, 
    arg_vector=0xbfcbfc48) at eval.c:3169
#48 0x08165ef1 in Ffuncall (nargs=1, args=0xbfcbfc44) at eval.c:3039
#49 0x08167768 in Fapply (nargs=2, args=0xbfcbfc44) at eval.c:2411
#50 0x08166215 in Ffuncall (nargs=3, args=0xbfcbfc40) at eval.c:2963
#51 0x0819103a in Fbyte_code (bytestr=136629355, vector=136629380, maxdepth=32)
    at bytecode.c:679
#52 0x081655a5 in Feval (form=136629341) at eval.c:2319
#53 0x08167b5f in internal_lisp_condition_case (var=137562313, 
    bodyform=136629341, handlers=136629413) at eval.c:1414
#54 0x0819032d in Fbyte_code (bytestr=136629211, vector=136629228, maxdepth=40)
    at bytecode.c:869
#55 0x08165aea in funcall_lambda (fun=136629172, nargs=1, 
    arg_vector=0xbfcbff74) at eval.c:3169
#56 0x08165ef1 in Ffuncall (nargs=2, args=0xbfcbff70) at eval.c:3039
#57 0x08167359 in call1 (fn=137591681, arg1=146720244) at eval.c:2767
#58 0x08106aa6 in timer_check (do_it_now=1) at keyboard.c:4519
#59 0x08106cb9 in readable_events (flags=1) at keyboard.c:3544
#60 0x08106d27 in get_input_pending (addr=0x831e320, flags=1)
    at keyboard.c:6638
#61 0x08106e00 in detect_input_pending_run_timers (do_display=1)
    at keyboard.c:10014
#62 0x081971a6 in wait_reading_process_output (time_limit=0, microsecs=0, 
    read_kbd=-1, do_display=1, wait_for_cell=137562313, wait_proc=0x0, 
    just_wait_proc=0) at process.c:4663
#63 0x0810a1f5 in read_char (commandflag=1, nmaps=7, maps=0xbfcc05d0, 
    prev_event=137562313, used_mouse_menu=0xbfcc0688, end_time=0x0)
    at keyboard.c:3980
#64 0x0810c726 in read_key_sequence (keybuf=0xbfcc0734, bufsize=30, 
    prompt=137562313, dont_downcase_last=0, can_return_switch_frame=1, 
    fix_current_buffer=1) at keyboard.c:8917
#65 0x0810e1e3 in command_loop_1 () at keyboard.c:1538
#66 0x08164b22 in internal_condition_case (bfun=0x810e050 <command_loop_1>, 
    handlers=137600937, hfun=0x8108c90 <cmd_error>) at eval.c:1469
#67 0x081080b3 in command_loop_2 () at keyboard.c:1329
#68 0x08164bda in internal_catch (tag=137594921, 
    func=0x8108090 <command_loop_2>, arg=137562313) at eval.c:1210
#69 0x08108acc in command_loop () at keyboard.c:1308
#70 0x08108e6a in recursive_edit_1 () at keyboard.c:1006
#71 0x08108f57 in Frecursive_edit () at keyboard.c:1067
#72 0x080fefe2 in main (argc=3, argv=0xbfcc0e34) at emacs.c:1814

Lisp Backtrace:
"accept-process-output" (0xac4b20c)
"nnheader-accept-process-output" (0xac4b20c)
"nntp-accept-process-output" (0xac4b20c)
"nntp-accept-response" (0x350)
"byte-code" (0xabc917b)
"byte-code" (0xabc916b)
"byte-code" (0xabc914b)
"nntp-retrieve-groups" (0xad3bc7d)
"gnus-retrieve-groups" (0xad3bc7d)
"gnus-read-active-file-2" (0xad3bc7d)
"gnus-read-active-file-1" (0xa69d4fd)
"gnus-read-active-file" (0x83308c9)
"gnus-group-get-new-news" (0x2a)
"byte-code" (0xad4e0e3)
"gnus-demon" (0x83308c9)
"apply" (0xabbfc71)
"byte-code" (0x824cc6b)
"timer-event-handler" (0x8bec5f4)
(gdb)

(gdb) bt full
#0  0x00b79248 in ___newselect_nocancel () from /lib/libc.so.6
No symbol table info available.
#1  0x08194325 in select_wrapper (n=-514, rfd=0x0, wfd=0xbfcbe478, xfd=0x0, 
    tmo=0xbfcbe5a8) at process.c:4188
No locals.
#2  0x081975e3 in wait_reading_process_output (time_limit=0, microsecs=100000, 
    read_kbd=0, do_display=0, wait_for_cell=137562313, wait_proc=0xac4b208, 
    just_wait_proc=0) at process.c:4560
        usecs = <value optimized out>
        timeout_reduced_for_timers = 0
        channel = 0
        nfds = 0
        Available = {
  fds_bits = {389248, 0 <repeats 31 times>}
}
        Connecting = {
  fds_bits = {0 <repeats 32 times>}
}
        check_connect = 0
        check_delay = 0
        no_avail = 0
        xerrno = 0
        proc = <value optimized out>
        timeout = {
  tv_sec = 0, 
  tv_usec = 40000
}
        end_time = {
  tv_sec = 1157323517, 
  tv_usec = 457274
}
        wait_channel = 12
        got_some_input = 0
#3  0x08199535 in Faccept_process_output (process=180662796, seconds=0, 
    millisec=800, just_this_one=137562313) at process.c:3929
        carry = <value optimized out>
        secs = 0
        usecs = 100000
#4  0x081660a1 in Ffuncall (nargs=4, args=0xbfcbe6a0) at eval.c:2992
        fun = <value optimized out>
        original_fun = 4
        funcar = <value optimized out>
        numargs = 3
        val = <value optimized out>
        backtrace = {
  next = 0xbfcbe798, 
  function = 0xbfcbe6a0, 
  args = 0xbfcbe6a4, 
  nargs = 3, 
  evalargs = 0 '\0', 
  debug_on_exit = 0 '\0'
}
        internal_args = (Lisp_Object *) 0xbfcbe630
        i = <value optimized out>
#5  0x0819103a in Fbyte_code (bytestr=178229091, vector=178231668, maxdepth=56)
    at bytecode.c:679
        v1 = <value optimized out>
        v2 = <value optimized out>
        op = dwarf2_read_address: Corrupted DWARF expression.

Lisp Backtrace:
"accept-process-output" (0xac4b20c)
"nnheader-accept-process-output" (0xac4b20c)
"nntp-accept-process-output" (0xac4b20c)
"nntp-accept-response" (0x350)
"byte-code" (0xabc917b)
"byte-code" (0xabc916b)
"byte-code" (0xabc914b)
"nntp-retrieve-groups" (0xad3bc7d)
"gnus-retrieve-groups" (0xad3bc7d)
"gnus-read-active-file-2" (0xad3bc7d)
"gnus-read-active-file-1" (0xa69d4fd)
"gnus-read-active-file" (0x83308c9)
"gnus-group-get-new-news" (0x2a)
"byte-code" (0xad4e0e3)
"gnus-demon" (0x83308c9)
"apply" (0xabbfc71)
"byte-code" (0x824cc6b)
"timer-event-handler" (0x8bec5f4)
(gdb)

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-04  8:41 Kim F. Storm
@ 2006-09-05 21:18 ` Chong Yidong
  2006-09-05 21:21   ` Stefan Monnier
  2006-09-06 19:06   ` Richard Stallman
  2006-09-07 14:37 ` Chong Yidong
  2006-09-22 20:04 ` Chong Yidong
  2 siblings, 2 replies; 58+ messages in thread
From: Chong Yidong @ 2006-09-05 21:18 UTC (permalink / raw)
  Cc: leon, emacs-devel

no-spam@cua.dk (Kim F. Storm) writes:

> Here is an interesting backtrace from Leon:
>
> It is hanging (C-g not working) with gnus-demon called
> from a timer.  
>
> Would someone pls. investigate this.

If I remember correctly from previous discussions, this bug happens
when a cable is unplugged while Gnus is running, and it's been around
for years.

>From the backtrace, it looks Emacs is hanging on the select call.  My
guess is that the unplugged network cable causes select to wait
forever, in spite of the non-NULL timeout argument passed to it.  If
this is true, it's a bug in the select system call, and there's little
Emacs can do to work around it.

> (gdb) bt
> #0  0x00b79248 in ___newselect_nocancel () from /lib/libc.so.6
> #1  0x08194325 in select_wrapper (n=-514, rfd=0x0, wfd=0xbfcbe478, xfd=0x0, 
>     tmo=0xbfcbe5a8) at process.c:4188
> #2  0x081975e3 in wait_reading_process_output (time_limit=0, microsecs=100000, 
>     read_kbd=0, do_display=0, wait_for_cell=137562313, wait_proc=0xac4b208, 
>     just_wait_proc=0) at process.c:4560


> #1  0x08194325 in select_wrapper (n=-514, rfd=0x0, wfd=0xbfcbe478, xfd=0x0, 
>     tmo=0xbfcbe5a8) at process.c:4188
> No locals.
> #2  0x081975e3 in wait_reading_process_output (time_limit=0, microsecs=100000, 
>     read_kbd=0, do_display=0, wait_for_cell=137562313, wait_proc=0xac4b208, 
>     just_wait_proc=0) at process.c:4560
>         usecs = <value optimized out>
>         timeout_reduced_for_timers = 0
>         channel = 0
>         nfds = 0
>         Available = {
>   fds_bits = {389248, 0 <repeats 31 times>}
> }
>         Connecting = {
>   fds_bits = {0 <repeats 32 times>}
> }
>         check_connect = 0
>         check_delay = 0
>         no_avail = 0
>         xerrno = 0
>         proc = <value optimized out>
>         timeout = {
>   tv_sec = 0, 
>   tv_usec = 40000
> }
>         end_time = {
>   tv_sec = 1157323517, 
>   tv_usec = 457274
> }
>         wait_channel = 12
>         got_some_input = 0

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-05 21:18 ` Chong Yidong
@ 2006-09-05 21:21   ` Stefan Monnier
  2006-09-07 20:43     ` Chong Yidong
  2006-09-06 19:06   ` Richard Stallman
  1 sibling, 1 reply; 58+ messages in thread
From: Stefan Monnier @ 2006-09-05 21:21 UTC (permalink / raw)
  Cc: leon, emacs-devel, Kim F. Storm

>> Here is an interesting backtrace from Leon:
>> 
>> It is hanging (C-g not working) with gnus-demon called
>> from a timer.  
>> 
>> Would someone pls. investigate this.

> If I remember correctly from previous discussions, this bug happens
> when a cable is unplugged while Gnus is running, and it's been around
> for years.

>> From the backtrace, it looks Emacs is hanging on the select call.  My
> guess is that the unplugged network cable causes select to wait
> forever, in spite of the non-NULL timeout argument passed to it.  If
> this is true, it's a bug in the select system call, and there's little
> Emacs can do to work around it.

That's the for the "hang" part.  But there's another problem which is the
"C-g not working" part, for which Emacs should be able to do something.


        Stefan

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-05 21:18 ` Chong Yidong
  2006-09-05 21:21   ` Stefan Monnier
@ 2006-09-06 19:06   ` Richard Stallman
  1 sibling, 0 replies; 58+ messages in thread
From: Richard Stallman @ 2006-09-06 19:06 UTC (permalink / raw)
  Cc: sdl.web, emacs-devel, no-spam

    >From the backtrace, it looks Emacs is hanging on the select call.  My
    guess is that the unplugged network cable causes select to wait
    forever, in spite of the non-NULL timeout argument passed to it.  If
    this is true, it's a bug in the select system call, and there's little
    Emacs can do to work around it.

Can you verify that the select call is really doing this?
If it is really a kernel bug, let's get it reported, so it will get fixed.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-04  8:41 Kim F. Storm
  2006-09-05 21:18 ` Chong Yidong
@ 2006-09-07 14:37 ` Chong Yidong
  2006-09-22 20:04 ` Chong Yidong
  2 siblings, 0 replies; 58+ messages in thread
From: Chong Yidong @ 2006-09-07 14:37 UTC (permalink / raw)
  Cc: emacs-devel, Kim F. Storm

>> leon <sdl.web@googlemail.com> writes:
>>
>>> emacs still loses reponse and won't be able to restore to normal.
>>
>> And it doesn't respond to C-g ??
>
> No.
>
> (gdb) bt
> #0  0x00b79248 in ___newselect_nocancel () from /lib/libc.so.6
> #1  0x08194325 in select_wrapper (n=-514, rfd=0x0, wfd=0xbfcbe478, xfd=0x0, 
>     tmo=0xbfcbe5a8) at process.c:4188
> #2  0x081975e3 in wait_reading_process_output (time_limit=0, microsecs=100000, 
>     read_kbd=0, do_display=0, wait_for_cell=137562313, wait_proc=0xac4b208, 
>     just_wait_proc=0) at process.c:4560

While Emacs is hung, could you go back to gdb, set a breakpoint at
interrupt_signal, and see what happens when you try to run C-g?  If
this drops you back into gdb at interrupt_signal, examine the values
of the following variables.

  b interrupt_signal
  c
   [Type C-g in Emacs -- this should drop back into gdb at interrupt_signal]
  p Qnil
  p Vquit_flag
  p immediate_quit
  p Vinhibit_quit
  p waiting_for_input
  p echoing

(If C-g doesn't drop you back into gdb at interrupt_signal, then it
probably is a kernel bug and there's nothing we can do about it).

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-05 21:21   ` Stefan Monnier
@ 2006-09-07 20:43     ` Chong Yidong
  2006-09-08 11:56       ` Richard Stallman
  0 siblings, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2006-09-07 20:43 UTC (permalink / raw)
  Cc: leon, emacs-devel, Kim F. Storm

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> From the backtrace, it looks Emacs is hanging on the select call.
>> My guess is that the unplugged network cable causes select to wait
>> forever, in spite of the non-NULL timeout argument passed to it.
>> If this is true, it's a bug in the select system call, and there's
>> little Emacs can do to work around it.
>
> That's the for the "hang" part.  But there's another problem which
> is the "C-g not working" part, for which Emacs should be able to do
> something.

Unless the hang in the select system call prevents C-g from calling
interrupt_signal in the first place, which we couldn't possibly do
anything about.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-07 20:43     ` Chong Yidong
@ 2006-09-08 11:56       ` Richard Stallman
  0 siblings, 0 replies; 58+ messages in thread
From: Richard Stallman @ 2006-09-08 11:56 UTC (permalink / raw)
  Cc: sdl.web, no-spam, monnier, emacs-devel

    Unless the hang in the select system call prevents C-g from calling
    interrupt_signal in the first place, which we couldn't possibly do
    anything about.

If that is true, it is a serious kernel bug.  Can anyone verify that
that is true?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
@ 2006-09-09 22:33 Kim F. Storm
  2006-09-10  4:10 ` Stefan Monnier
  0 siblings, 1 reply; 58+ messages in thread
From: Kim F. Storm @ 2006-09-09 22:33 UTC (permalink / raw)
  Cc: Chong Yidong, Leon


On Thu, 09/07/2006 15:48 +0100, Kim F. Storm wrote:

> From: Chong Yidong <cyd@stupidchicken.com>
> Subject: Re: gnus makes emacs lose response
> Newsgroups: gmane.emacs.devel
> Cc: emacs-devel@gnu.org, "Kim F. Storm" <no-spam@cua.dk>
> Date: Thu Sep  7 15:37:23 2006 +0100
>
>>> leon <sdl.web@googlemail.com> writes:
>>>
>>>> emacs still loses reponse and won't be able to restore to normal.
>
>>>
>>> And it doesn't respond to C-g ??
>>
>> No.
>>
>> (gdb) bt
>> #0  0x00b79248 in ___newselect_nocancel () from /lib/libc.so.6
>> #1  0x08194325 in select_wrapper (n=-514, rfd=0x0, wfd=0xbfcbe478, xfd=0x0, 
>>     tmo=0xbfcbe5a8) at process.c:4188
>> #2  0x081975e3 in wait_reading_process_output (time_limit=0, microsecs=100000, 
>>     read_kbd=0, do_display=0, wait_for_cell=137562313, wait_proc=0xac4b208, 
>>     just_wait_proc=0) at process.c:4560
>
> While Emacs is hung, could you go back to gdb, set a breakpoint at
> interrupt_signal, and see what happens when you try to run C-g?  If
> this drops you back into gdb at interrupt_signal, examine the values
> of the following variables.
>
>   b interrupt_signal
>   c
>    [Type C-g in Emacs -- this should drop back into gdb at interrupt_signal]
>   p Qnil
>   p Vquit_flag
>   p immediate_quit
>   p Vinhibit_quit
>   p waiting_for_input
>   p echoing
>
> (If C-g doesn't drop you back into gdb at interrupt_signal, then it
> probably is a kernel bug and there's nothing we can do about it).
> ----------

Here is the log. C-g can return to gdb.


GNU gdb Red Hat Linux (6.5-7.fc6rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

DISPLAY = :0.0
TERM = xterm
Breakpoint 1 at 0x80fe1d6: file emacs.c, line 464.
Breakpoint 2 at 0x8116866: file sysdep.c, line 1395.
(gdb) r
Starting program: /home/tmp/emacs/src/emacs -geometry 80x40+0+0
[Thread debugging using libthread_db enabled]
[New Thread -1208244544 (LWP 10921)]
[Switching to Thread -1208244544 (LWP 10921)]
Breakpoint 3 at 0x80d2b2c: file xterm.c, line 8039.

Program received signal SIGTSTP, Stopped (user).
0x00908402 in __kernel_vsyscall ()
(gdb) b interrupt_signal
Breakpoint 4 at 0x8102435: file keyboard.c, line 10389.
(gdb) c
Continuing.

Breakpoint 4, interrupt_signal (signalnum=0) at keyboard.c:10389
10389     int old_errno = errno;
(gdb) p Qnil
$1 = 137562313
(gdb) p Vquit_flag
$2 = 137562313
(gdb) p immediate_quit
$3 = 0
(gdb) p Vinhibit_quit
$4 = 137562361
(gdb)  p waiting_for_input
$5 = 0
(gdb)  p echoing
$6 = 0
(gdb) 


regards,
-- 
Leon

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-09 22:33 Kim F. Storm
@ 2006-09-10  4:10 ` Stefan Monnier
  2006-09-16 20:22   ` Chong Yidong
  2006-09-18 14:40   ` Chong Yidong
  0 siblings, 2 replies; 58+ messages in thread
From: Stefan Monnier @ 2006-09-10  4:10 UTC (permalink / raw)
  Cc: Chong Yidong, Leon, emacs-devel

> (gdb) p Qnil
> $1 = 137562313
> (gdb) p Vquit_flag
> $2 = 137562313
> (gdb) p immediate_quit
> $3 = 0
> (gdb) p Vinhibit_quit
> $4 = 137562361

So inhibit-quit is non-nil, so shouldn't my patch have caught this?
What does the xbacktrace look like?


        Stefan

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-10  4:10 ` Stefan Monnier
@ 2006-09-16 20:22   ` Chong Yidong
  2006-09-18 14:40   ` Chong Yidong
  1 sibling, 0 replies; 58+ messages in thread
From: Chong Yidong @ 2006-09-16 20:22 UTC (permalink / raw)
  Cc: emacs-devel, Leon, Kim F. Storm

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> (gdb) p Qnil
>> $1 = 137562313
>> (gdb) p Vquit_flag
>> $2 = 137562313
>> (gdb) p immediate_quit
>> $3 = 0
>> (gdb) p Vinhibit_quit
>> $4 = 137562361
>
> So inhibit-quit is non-nil, so shouldn't my patch have caught this?
> What does the xbacktrace look like?

Could we get this discussion moving again?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-10  4:10 ` Stefan Monnier
  2006-09-16 20:22   ` Chong Yidong
@ 2006-09-18 14:40   ` Chong Yidong
  2006-09-18 14:53     ` Chong Yidong
  2006-09-18 14:55     ` Stefan Monnier
  1 sibling, 2 replies; 58+ messages in thread
From: Chong Yidong @ 2006-09-18 14:40 UTC (permalink / raw)
  Cc: emacs-devel, Leon, Kim F. Storm

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> (gdb) p Qnil
>> $1 = 137562313
>> (gdb) p Vquit_flag
>> $2 = 137562313
>> (gdb) p immediate_quit
>> $3 = 0
>> (gdb) p Vinhibit_quit
>> $4 = 137562361
>
> So inhibit-quit is non-nil, so shouldn't my patch have caught this?

Which patch are you referring to here?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-18 14:40   ` Chong Yidong
@ 2006-09-18 14:53     ` Chong Yidong
  2006-09-19 10:45       ` Stefan Monnier
  2006-09-18 14:55     ` Stefan Monnier
  1 sibling, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2006-09-18 14:53 UTC (permalink / raw)
  Cc: Kim F. Storm, Leon, emacs-devel

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>>> (gdb) p Qnil
>>> $1 = 137562313
>>> (gdb) p Vquit_flag
>>> $2 = 137562313
>>> (gdb) p immediate_quit
>>> $3 = 0
>>> (gdb) p Vinhibit_quit
>>> $4 = 137562361
>>
>> So inhibit-quit is non-nil, so shouldn't my patch have caught this?
>
> Which patch are you referring to here?

OK I found it.

    --- orig/src/process.c
    +++ mod/src/process.c
    @@ -4255,6 +4256,9 @@
       FD_ZERO (&Connecting);
    #endif
    
    +  if (time_limit == 0 && PROCESSP (read_kbd) && !NILP (Vinhibit_quit))
    +    error ("Blocking call to accept-process-output with quit inhibited!!");
    +
       /* If wait_proc is a process to watch, set wait_channel accordingly.  */
       if (wait_proc != NULL)
         wait_channel = XINT (wait_proc->infd);

Stefan, why do you check read_kbd with PROCESSP?  read_kbd is an
integer (0 in this case), not a process.  Shouldn't it be

    +  if (time_limit == 0 && read_kbd == 0 && !NILP (Vinhibit_quit))
    +    error ("Blocking call to accept-process-output with quit inhibited!!");

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-18 14:40   ` Chong Yidong
  2006-09-18 14:53     ` Chong Yidong
@ 2006-09-18 14:55     ` Stefan Monnier
  1 sibling, 0 replies; 58+ messages in thread
From: Stefan Monnier @ 2006-09-18 14:55 UTC (permalink / raw)
  Cc: emacs-devel, Leon, Kim F. Storm

>>>>> "Chong" == Chong Yidong <cyd@stupidchicken.com> writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>> (gdb) p Qnil
>>> $1 = 137562313
>>> (gdb) p Vquit_flag
>>> $2 = 137562313
>>> (gdb) p immediate_quit
>>> $3 = 0
>>> (gdb) p Vinhibit_quit
>>> $4 = 137562361
>> 
>> So inhibit-quit is non-nil, so shouldn't my patch have caught this?

> Which patch are you referring to here?

The one below, which I sent at the beginning of this thread.


        Stefan


--- orig/src/process.c
+++ mod/src/process.c
@@ -4259,6 +4260,9 @@
   FD_ZERO (&Connecting);
 #endif
 
+  if (time_limit == 0 && PROCESSP (read_kbd) && !NILP (Vinhibit_quit))
+    error ("Blocking call to accept-process-output with quit inhibited!!");
+
   /* If wait_proc is a process to watch, set wait_channel accordingly.  */
   if (wait_proc != NULL)
     wait_channel = XINT (wait_proc->infd);

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-18 14:53     ` Chong Yidong
@ 2006-09-19 10:45       ` Stefan Monnier
  2006-09-19 15:02         ` Chong Yidong
  2006-09-23  3:34         ` Richard Stallman
  0 siblings, 2 replies; 58+ messages in thread
From: Stefan Monnier @ 2006-09-19 10:45 UTC (permalink / raw)
  Cc: Kim F. Storm, Leon, emacs-devel

> Stefan, why do you check read_kbd with PROCESSP?

Hmm.... beats me!

> read_kbd is an
> integer (0 in this case), not a process.  Shouldn't it be

Oh I see, it's because I haven't updated the code in response to the
following change:

2004-08-19  Kim F. Storm  <storm@cua.dk>

	* process.c (wait_reading_process_input): Clean up.
	Add wait_for_cell, wait_proc, and just_wait_proc args
	to avoid overloading `read_kbd' and `do_display' args.
	Change read_kbd arg to int.  All callers changed.

So I should probably check wait_proc instead.


        Stefan

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-19 10:45       ` Stefan Monnier
@ 2006-09-19 15:02         ` Chong Yidong
  2006-09-22 19:12           ` Stefan Monnier
  2006-09-23  3:34         ` Richard Stallman
  1 sibling, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2006-09-19 15:02 UTC (permalink / raw)
  Cc: Kim F. Storm, Leon, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Oh I see, it's because I haven't updated the code in response to the
> following change:
>
> 2004-08-19  Kim F. Storm  <storm@cua.dk>
>
> 	* process.c (wait_reading_process_input): Clean up.
> 	Add wait_for_cell, wait_proc, and just_wait_proc args
> 	to avoid overloading `read_kbd' and `do_display' args.
> 	Change read_kbd arg to int.  All callers changed.
>
> So I should probably check wait_proc instead.

Could you post a new patch for Leon to try?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-19 15:02         ` Chong Yidong
@ 2006-09-22 19:12           ` Stefan Monnier
  2006-09-23 18:01             ` Richard Stallman
  0 siblings, 1 reply; 58+ messages in thread
From: Stefan Monnier @ 2006-09-22 19:12 UTC (permalink / raw)
  Cc: Kim F. Storm, Leon, emacs-devel

>>>>> "Chong" == Chong Yidong <cyd@stupidchicken.com> writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Oh I see, it's because I haven't updated the code in response to the
>> following change:
>> 
>> 2004-08-19  Kim F. Storm  <storm@cua.dk>
>> 
>> * process.c (wait_reading_process_input): Clean up.
>> Add wait_for_cell, wait_proc, and just_wait_proc args
>> to avoid overloading `read_kbd' and `do_display' args.
>> Change read_kbd arg to int.  All callers changed.
>> 
>> So I should probably check wait_proc instead.

> Could you post a new patch for Leon to try?

You mean like the patch below?


        Stefan


--- orig/src/process.c
+++ mod/src/process.c
@@ -4259,6 +4260,9 @@
   FD_ZERO (&Connecting);
 #endif
 
+  if (time_limit == 0 && wait_proc && !NILP (Vinhibit_quit))
+    error ("Blocking call to accept-process-output with quit inhibited!!");
+
   /* If wait_proc is a process to watch, set wait_channel accordingly.  */
   if (wait_proc != NULL)
     wait_channel = XINT (wait_proc->infd);

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-04  8:41 Kim F. Storm
  2006-09-05 21:18 ` Chong Yidong
  2006-09-07 14:37 ` Chong Yidong
@ 2006-09-22 20:04 ` Chong Yidong
  2006-09-25  0:39   ` Stefan Monnier
  2 siblings, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2006-09-22 20:04 UTC (permalink / raw)
  Cc: emacs-devel

After some communication with Leon, I found out that `gnus-demon' was
being called with inhibit-quit set to t.  This is done by timer_check
in keyboard.c:4528.

      /* Mark the timer as triggered to prevent problems if the lisp
	 code fails to reschedule it right.  */
      vector[0] = Qt;

      specbind (Qinhibit_quit, Qt);

      call1 (Qtimer_event_handler, chosen_timer);

This behavior is documented in the Lisp Reference manual:

   Emacs binds `inhibit-quit' to `t' before calling the timer
   function, because quitting out of many timer functions can leave
   things in an inconsistent state.  This is normally unproblematical
   because most timer functions don't do a lot of work.  Indeed, for a
   timer to call a function that takes substantial time to run is
   likely to be annoying.

However, the result is that when the `gnus-demon' timer function calls
accept-process-output, it can't be interrupted.

I'm not sure what the best way to handle this is.  Anyone?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-19 10:45       ` Stefan Monnier
  2006-09-19 15:02         ` Chong Yidong
@ 2006-09-23  3:34         ` Richard Stallman
  2006-09-23 15:02           ` Stefan Monnier
  1 sibling, 1 reply; 58+ messages in thread
From: Richard Stallman @ 2006-09-23  3:34 UTC (permalink / raw)
  Cc: cyd, emacs-devel, sdl.web, storm

    Oh I see, it's because I haven't updated the code in response to the
    following change:

    2004-08-19  Kim F. Storm  <storm@cua.dk>

	    * process.c (wait_reading_process_input): Clean up.
	    Add wait_for_cell, wait_proc, and just_wait_proc args
	    to avoid overloading `read_kbd' and `do_display' args.
	    Change read_kbd arg to int.  All callers changed.

    So I should probably check wait_proc instead.

Would you please make whatever change is needed?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-23  3:34         ` Richard Stallman
@ 2006-09-23 15:02           ` Stefan Monnier
  0 siblings, 0 replies; 58+ messages in thread
From: Stefan Monnier @ 2006-09-23 15:02 UTC (permalink / raw)
  Cc: cyd, emacs-devel, sdl.web, storm

>     Oh I see, it's because I haven't updated the code in response to the
>     following change:

>     2004-08-19  Kim F. Storm  <storm@cua.dk>

> 	    * process.c (wait_reading_process_input): Clean up.
> 	    Add wait_for_cell, wait_proc, and just_wait_proc args
> 	    to avoid overloading `read_kbd' and `do_display' args.
> 	    Change read_kbd arg to int.  All callers changed.

>     So I should probably check wait_proc instead.

> Would you please make whatever change is needed?

We're talking about a local change which I have no intention to install in
Emacs-CVS, or at least not for Emacs-22.  Although maybe it could be
added but controlled by a compilation flag such as ENABLE_CHECKING
or DEBUG.


        Stefan

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-22 19:12           ` Stefan Monnier
@ 2006-09-23 18:01             ` Richard Stallman
  0 siblings, 0 replies; 58+ messages in thread
From: Richard Stallman @ 2006-09-23 18:01 UTC (permalink / raw)
  Cc: cyd, emacs-devel, sdl.web, storm

    You mean like the patch below?

Should that patch be installed?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
@ 2006-09-23 18:18 Chong Yidong
  2006-09-23 23:42 ` Luc Teirlinck
  2006-09-26 17:26 ` Leo
  0 siblings, 2 replies; 58+ messages in thread
From: Chong Yidong @ 2006-09-23 18:18 UTC (permalink / raw)
  Cc: ding

After some further communication with Leon, I think I know the
problem: accept-process-output is called by the timer function
`gnus-demon' (which is a valid but IIUC not commonly-used component of
Gnus).  However, as documented in the Lisp Reference manual:

   Emacs binds `inhibit-quit' to `t' before calling the timer
   function, because quitting out of many timer functions can leave
   things in an inconsistent state.  This is normally unproblematical
   because most timer functions don't do a lot of work.  Indeed, for a
   timer to call a function that takes substantial time to run is
   likely to be annoying.

The result in this case is that this accept-process-output can't be
interrupted, and Emacs can hang if the process doesn't reply (e.g., if
the connection dies).

I'm not sure what the best way to handle this is.  Anyone?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-23 18:18 Chong Yidong
@ 2006-09-23 23:42 ` Luc Teirlinck
  2006-09-26 17:26 ` Leo
  1 sibling, 0 replies; 58+ messages in thread
From: Luc Teirlinck @ 2006-09-23 23:42 UTC (permalink / raw)
  Cc: ding, emacs-devel

Chong Yidong wrote:

   After some further communication with Leon, I think I know the
   problem: accept-process-output is called by the timer function
   `gnus-demon' (which is a valid but IIUC not commonly-used component of
   Gnus).  However, as documented in the Lisp Reference manual:

      Emacs binds `inhibit-quit' to `t' before calling the timer
      function, because quitting out of many timer functions can leave
      things in an inconsistent state.  This is normally unproblematical
      because most timer functions don't do a lot of work.  Indeed, for a
      timer to call a function that takes substantial time to run is
      likely to be annoying.

   The result in this case is that this accept-process-output can't be
   interrupted, and Emacs can hang if the process doesn't reply (e.g., if
   the connection dies).

   I'm not sure what the best way to handle this is.  Anyone?

I have no time to look at the actual code, but is there any reason why
the routine way to handle this problem, namely using `with-local-quit'
(see (elisp)Quitting) around the problematic code (in this case
probably the call to accept-process-output) does not work in this case?

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-22 20:04 ` Chong Yidong
@ 2006-09-25  0:39   ` Stefan Monnier
  2006-09-25 15:22     ` Chong Yidong
  0 siblings, 1 reply; 58+ messages in thread
From: Stefan Monnier @ 2006-09-25  0:39 UTC (permalink / raw)
  Cc: emacs-devel, Kim F. Storm

> This behavior is documented in the Lisp Reference manual:

>    Emacs binds `inhibit-quit' to `t' before calling the timer
>    function, because quitting out of many timer functions can leave
>    things in an inconsistent state.  This is normally unproblematical
>    because most timer functions don't do a lot of work.  Indeed, for a
>    timer to call a function that takes substantial time to run is
>    likely to be annoying.

> However, the result is that when the `gnus-demon' timer function calls
> accept-process-output, it can't be interrupted.

> I'm not sure what the best way to handle this is.  Anyone?

`with-local-quit'.
The manual should be changed to point to it,


        Stefan

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-25  0:39   ` Stefan Monnier
@ 2006-09-25 15:22     ` Chong Yidong
  0 siblings, 0 replies; 58+ messages in thread
From: Chong Yidong @ 2006-09-25 15:22 UTC (permalink / raw)
  Cc: emacs-devel, Kim F. Storm

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> This behavior is documented in the Lisp Reference manual:
>
>>    Emacs binds `inhibit-quit' to `t' before calling the timer
>>    function, because quitting out of many timer functions can leave
>>    things in an inconsistent state.  This is normally unproblematical
>>    because most timer functions don't do a lot of work.  Indeed, for a
>>    timer to call a function that takes substantial time to run is
>>    likely to be annoying.
>
>> However, the result is that when the `gnus-demon' timer function calls
>> accept-process-output, it can't be interrupted.
>
>> I'm not sure what the best way to handle this is.  Anyone?
>
> `with-local-quit'.
> The manual should be changed to point to it,

I've checked in a fix, which Leon has confirmed to fix his problem.
(I've updated the lispref manual too.)

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-23 18:18 Chong Yidong
  2006-09-23 23:42 ` Luc Teirlinck
@ 2006-09-26 17:26 ` Leo
  2006-09-26 18:08   ` Chong Yidong
  1 sibling, 1 reply; 58+ messages in thread
From: Leo @ 2006-09-26 17:26 UTC (permalink / raw)
  Cc: ding

On Sat, 09/23/2006 19:18 +0100, Chong Yidong wrote:

> After some further communication with Leon, I think I know the
> problem: accept-process-output is called by the timer function
> `gnus-demon' (which is a valid but IIUC not commonly-used component of
> Gnus).  However, as documented in the Lisp Reference manual:
>
>    Emacs binds `inhibit-quit' to `t' before calling the timer
>    function, because quitting out of many timer functions can leave
>    things in an inconsistent state.  This is normally unproblematical
>    because most timer functions don't do a lot of work.  Indeed, for a
>    timer to call a function that takes substantial time to run is
>    likely to be annoying.
>
> The result in this case is that this accept-process-output can't be
> interrupted, and Emacs can hang if the process doesn't reply (e.g., if
> the connection dies).
>
> I'm not sure what the best way to handle this is.  Anyone?

The ChangeLog says it's fixed. But I can't see the actually
fix. gnus-demon.el has not been changed for 7 month.

-- 
Leo

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-26 17:26 ` Leo
@ 2006-09-26 18:08   ` Chong Yidong
  2006-09-26 19:20     ` Leo
  0 siblings, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2006-09-26 18:08 UTC (permalink / raw)
  Cc: ding, emacs-devel

Leo <sdl.web@gmail.com> writes:

> The ChangeLog says it's fixed. But I can't see the actually
> fix. gnus-demon.el has not been changed for 7 month.

Hmm, I could have sworn I checked it in; oh well. I really did check
it in this time.

^ permalink raw reply	[flat|nested] 58+ messages in thread

* Re: gnus makes emacs lose response
  2006-09-26 18:08   ` Chong Yidong
@ 2006-09-26 19:20     ` Leo
  0 siblings, 0 replies; 58+ messages in thread
From: Leo @ 2006-09-26 19:20 UTC (permalink / raw)
  Cc: ding

On Tue, 09/26/2006 19:08 +0100, Chong Yidong wrote:

> Leo <sdl.web@gmail.com> writes:
>
>> The ChangeLog says it's fixed. But I can't see the actually
>> fix. gnus-demon.el has not been changed for 7 month.
>
> Hmm, I could have sworn I checked it in; oh well. I really did check
> it in this time.

Thanks.

I can see the change now.

-- 
Leo

^ permalink raw reply	[flat|nested] 58+ messages in thread

end of thread, other threads:[~2006-09-26 19:20 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <m2lkuuynpf.fsf@sl392.st-edmunds.cam.ac.uk>
     [not found] ` <m24q18rize.fsf@sl392.st-edmunds.cam.ac.uk>
2006-04-05  8:47   ` gnus makes emacs lose response Kim F. Storm
2006-04-05 17:55     ` Leon
2006-04-06  9:08       ` Kim F. Storm
2006-04-06 21:15         ` Leon
2006-04-07  8:13           ` Kim F. Storm
2006-04-07 13:25             ` Leon
2006-04-07 20:58         ` Ralf Angeli
2006-04-09  1:17           ` Leon
2006-04-17 20:35           ` Ralf Angeli
2006-04-18  1:46             ` Leon
2006-04-19 20:18               ` Ralf Angeli
2006-04-20  1:19                 ` Leon
2006-04-19 20:18             ` Ralf Angeli
2006-04-19 20:51               ` Stefan Monnier
2006-04-19 21:13                 ` Ralf Angeli
2006-04-20 18:05               ` Gregory Novak
2006-04-24  0:41                 ` Kim F. Storm
2006-08-22 11:44               ` Kim F. Storm
2006-08-23 14:45                 ` Richard Stallman
2006-08-23 15:00                   ` Kim F. Storm
2006-08-25  7:43                     ` Richard Stallman
2006-08-25  8:15                       ` Kim F. Storm
2006-08-26 10:08                         ` Richard Stallman
2006-08-26 21:32                           ` Kim F. Storm
2006-08-25  8:56                       ` Jason Rumney
2006-08-23 20:51                   ` Stefan Monnier
2006-08-24  3:17                   ` Bob Rogers
2006-08-24  7:51                     ` Kim F. Storm
2006-08-25  1:01                       ` Bob Rogers
2006-08-25 20:23                       ` Richard Stallman
2006-08-25  7:44                     ` Richard Stallman
2006-09-04  8:41 Kim F. Storm
2006-09-05 21:18 ` Chong Yidong
2006-09-05 21:21   ` Stefan Monnier
2006-09-07 20:43     ` Chong Yidong
2006-09-08 11:56       ` Richard Stallman
2006-09-06 19:06   ` Richard Stallman
2006-09-07 14:37 ` Chong Yidong
2006-09-22 20:04 ` Chong Yidong
2006-09-25  0:39   ` Stefan Monnier
2006-09-25 15:22     ` Chong Yidong
  -- strict thread matches above, loose matches on Subject: below --
2006-09-09 22:33 Kim F. Storm
2006-09-10  4:10 ` Stefan Monnier
2006-09-16 20:22   ` Chong Yidong
2006-09-18 14:40   ` Chong Yidong
2006-09-18 14:53     ` Chong Yidong
2006-09-19 10:45       ` Stefan Monnier
2006-09-19 15:02         ` Chong Yidong
2006-09-22 19:12           ` Stefan Monnier
2006-09-23 18:01             ` Richard Stallman
2006-09-23  3:34         ` Richard Stallman
2006-09-23 15:02           ` Stefan Monnier
2006-09-18 14:55     ` Stefan Monnier
2006-09-23 18:18 Chong Yidong
2006-09-23 23:42 ` Luc Teirlinck
2006-09-26 17:26 ` Leo
2006-09-26 18:08   ` Chong Yidong
2006-09-26 19:20     ` Leo

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).