emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Solaris 5.8 version doesn't run anymore


From: Klaus Zeitler
Subject: Solaris 5.8 version doesn't run anymore
Date: Thu, 29 May 2008 15:07:05 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (usg-unix-v)

Hello,
the CVS version hangs at startup under Solaris 5.8.
When I debug emacs, I see that emacs wont return from the select call
in function wait_reading_process_output (line 4584).
More exactly it will return after the timeout of 100000 seconds (though
that's a bit too long for me to wait).
Here's a debug session:

GNU gdb 6.5
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 "sparc-sun-solaris2.8"...
DISPLAY = sfsw51.de.lucent.com:0
TERM = dumb
Breakpoint 1 at 0x1993ac: file /vol/freeware/cvs/emacs/head/emacs/src/emacs.c, 
line 427.
Breakpoint 2 at 0x1cac08: file /vol/freeware/cvs/emacs/head/emacs/src/sysdep.c, 
line 1322.
(gdb) b wait_reading_process_output
Breakpoint 3 at 0x2eadc8: file 
/vol/freeware/cvs/emacs/head/emacs/src/process.c, line 4264.
(gdb) R -Q

Breakpoint 3, wait_reading_process_output (time_limit=0, microsecs=0, 
    read_kbd=-1, do_display=1, wait_for_cell=5142529, wait_proc=0x0, 
    just_wait_proc=0) at /vol/freeware/cvs/emacs/head/emacs/src/process.c:4264
Breakpoint 4 at 0x2ebbf8: file 
/vol/freeware/cvs/emacs/head/emacs/src/process.c, line 4584.
(gdb) c

Breakpoint 4, wait_reading_process_output (time_limit=0, microsecs=0, 
    read_kbd=-1, do_display=1, wait_for_cell=5142529, wait_proc=0x0, 
    just_wait_proc=0) at /vol/freeware/cvs/emacs/head/emacs/src/process.c:4584
(gdb) p timeout
$1 = {
  tv_sec = 100000, 
  tv_usec = 0
}
(gdb) bt
#0  wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=-1, 
    do_display=1, wait_for_cell=5142529, wait_proc=0x0, just_wait_proc=0)
    at /vol/freeware/cvs/emacs/head/emacs/src/process.c:4595
#1  0x001a7a4c in kbd_buffer_get_event (kbp=0xffbedde0, 
    used_mouse_menu=0xffbee03c, end_time=0x0)
    at /vol/freeware/cvs/emacs/head/emacs/src/keyboard.c:4087
#2  0x001a479c in read_char (commandflag=1, nmaps=2, maps=0xffbedf20, 
    prev_event=5142529, used_mouse_menu=0xffbee03c, end_time=0x0)
    at /vol/freeware/cvs/emacs/head/emacs/src/keyboard.c:3041
#3  0x001b4014 in read_key_sequence (keybuf=0xffbee1c0, bufsize=30, 
    prompt=5142529, dont_downcase_last=0, can_return_switch_frame=1, 
    fix_current_buffer=1)
    at /vol/freeware/cvs/emacs/head/emacs/src/keyboard.c:9443
#4  0x0019f004 in command_loop_1 ()
    at /vol/freeware/cvs/emacs/head/emacs/src/keyboard.c:1651
#5  0x002713f8 in internal_condition_case (bfun=0x19ea64 <command_loop_1>, 
    handlers=5210281, hfun=0x19df58 <cmd_error>)
    at /vol/freeware/cvs/emacs/head/emacs/src/eval.c:1506
#6  0x0019e570 in command_loop_2 ()
    at /vol/freeware/cvs/emacs/head/emacs/src/keyboard.c:1367
#7  0x00270ba0 in internal_catch (tag=5206353, 
    func=0x19e544 <command_loop_2>, arg=5142529)
    at /vol/freeware/cvs/emacs/head/emacs/src/eval.c:1242
#8  0x0019e4ec in command_loop ()
    at /vol/freeware/cvs/emacs/head/emacs/src/keyboard.c:1346
#9  0x0019d7e8 in recursive_edit_1 ()
    at /vol/freeware/cvs/emacs/head/emacs/src/keyboard.c:955
#10 0x0019da9c in Frecursive_edit ()
    at /vol/freeware/cvs/emacs/head/emacs/src/keyboard.c:1017
#11 0x0019b658 in main (argc=2, argv=0xffbee7a4)
    at /vol/freeware/cvs/emacs/head/emacs/src/emacs.c:1770
(gdb) 


Just for fun I've changed the timeout initialization in line 4342
          EMACS_SET_SECS_USECS (timeout, 100000, 0);
to
          EMACS_SET_SECS_USECS (timeout, 0, 100000);

The select call will now return immediately, but that doesn't help much,
cause emacs doesn't seem to leave the big while loop in this function
and tries the select call over and over again. See line 4749:

      if (no_avail || nfds == 0)
        continue;


Unfortunately this function goes way over my had (for a quick glance
anyway). Maybe we shouldn't get there in the first place?

I hope somebody can help me.
Thanks
Klaus


-- 
 --------------------------------------------------
|  Klaus Zeitler      Alcatel-Lucent               |
|  Email:             address@hidden  |
 --------------------------------------------------
---
You can make it illegal, but you can't make it unpopular.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]