Subject: bug#6126: 24.0.50; Segmentation fault when w32-shell-execute try to open an unassociated file

From: Chunyu Wang <[email-masked]>
Date: Fri, 7 May 2010 22:21:39 +0800

2010/5/7 Eli Zaretskii <[email-masked]>:
> Does this problem happen in an unoptimized build as well?  If so,
> could you please find out what is the table it is using (the `tbl'
> variable in frame #0), and also what is `val' (by using the xtype
> command and a command to show the Lisp type printed by xtype, probably
> xchartable)?
Crashed as before for an unoptimized build one. The following is my tracing and
information about `tbl' and `val'. If need some other thing, just tell
me how to get it.

GNU gdb (GDB) 7.1
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from C:\free_ware\emacs-bzr\src/oo\i386\emacs.exe...done.
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) [answered Y; input not
from terminal]
Environment variable "DISPLAY" not defined.
Environment variable "TERM" not defined.
Breakpoint 1 at 0x11d0641: file w32fns.c, line 7349.
Temporary breakpoint 2 at 0x10c0d81: file sysdep.c, line 1039.
(gdb) run -Q --eval "(w32-shell-execute \"open\" \"D:\\abc.ttt\")"
Starting program: C:\free_ware\emacs-bzr\src/oo\i386\emacs.exe -Q
--eval "(w32-shell-execute \"open\" \"D:\\abc.ttt\")"
[New Thread 3848.0x7e4]
[New Thread 3848.0x184]
[New Thread 3848.0xcb4]
[New Thread 3848.0x88c]

Program received signal SIGSEGV, Segmentation fault.
0x01176ce6 in char_table_ref (table=48448005, c=16331833) at chartab.c:210
210	      if (SUB_CHAR_TABLE_P (val))
(gdb) p tbl
$1 = (struct Lisp_Char_Table *) 0x2e34200
(gdb) p *tbl
$2 = {
  size = 1073774666,
  next = 0x2e34600,
  defalt = 46147610,
  parent = 46147610,
  purpose = 46298426,
  ascii = 46147610,
  contents = {71655429, 46147610 <repeats 63 times>},
  extras = {46147610}
}
(gdb) p val
$3 = 762605157
(gdb) xtype val
Lisp_Vectorlike
Cannot access memory at address 0x2d746e60
(gdb) bt full
#0  0x01176ce6 in char_table_ref (table=48448005, c=16331833) at chartab.c:210
        tbl = 0x2e34200
        val = 762605157
#1  0x01047e85 in disp_char_vector (dp=0x2e34200, c=16331833) at xdisp.c:12602
        table = 48448005
        val = 16331833
#2  0x01160998 in c_string_width (
    str=0x13e3c28
"\303\273\323\320\323\246\323\303\263\314\320\362\323\353\264\313\262\331\327\367\265\304\326\270\266\250\316\304\274\376\323\320\271\330\301\252\241\243\r\n",
len=40, precision=-1, nchars=0x0, nbytes=0x0)
    at character.c:412
        bytes = 5
        thiswidth = 1
        val = 46147610
        c = 16331833
        i = 10
        i_byte = 28
        width = 11
        dp = 0x2e34200
#3  0x01160d70 in strwidth (
    str=0x13e3c28
"\303\273\323\320\323\246\323\303\263\314\320\362\323\353\264\313\262\331\327\367\265\304\326\270\266\250\316\304\274\376\323\320\271\330\301\252\241\243\r\n",
len=40) at character.c:453
No locals.
#4  0x011a111f in doprnt (
    buffer=0x88f220 "ShellExecute failed: R\033\366\274\362\210",
    bufsize=178, format=0x13b1272 "ShellExecute failed: %s",
    format_end=0x13b1289 "", nargs=3, args=0x88f200) at doprnt.c:213
        size_bound = 358
        width = 2011558878
        cnt = 1
        fmt = 0x13b1289 ""
        bufptr = 0x88f235 "R\033\366\274\362\210"
        tembuf =
"\320\357\250\000\320@\250\000\370\003\000\000\177\000\000\000\030\361\210\000\000\000\246\000&\252\353w\030\034\250\000@\v\000\000\372\066\346w\223\002\037u\000\000\000\000\000\000\246\000\370\035\250\000\204\000\004\200\350\242;!\002\000\004\006\000\000\000\000\250\004\004\250\000\000\000\000\370\361\210\000\000\000\000\000P\001\246\000\000\000\246\000\336\363\345wP\001\246\000\320\357\250\000\000\000\000\000\001\000;!\000\000\000\000\001\000\000\000\001\000\000\000\000\000\335u\177\000\000\000\004\000\000\000\002\000\000\000\000\000\335\000\004\b\000\000\320\357\250\000\003\000\000\000\370\003\000\000\000\000\000\000\310\361\210\000\003\002\004\005\177\000\000\000\000\000\000\000X$\341u\000\000\000\000\336\363\345wP\001\246\000"...
        size_allocated = 408
        sprintf_buffer = 0x88f010 "\320\357\250"
        big_buffer = 0x0
        tem = 40
        string = 0x13e3c28
"\303\273\323\320\323\246\323\303\263\314\320\362\323\353\264\313\262\331\327\367\265\304\326\270\266\250\316\304\274\376\323\320\271\330\301\252\241\243\r\n"
        fixed_buffer =
"\201\034\347w\000\000\246\000\310\243\353w\000\"\250\000X\005\000"
        fmtcpy = 0x88ef50 "%s"
        minlen = 0
        charbuf = "\001\000\000\000\000"
#5  0x010212ff in error (m=0x13b1272 "ShellExecute failed: %s",
    a1=0x13e3c28
"\303\273\323\320\323\246\323\303\263\314\320\362\323\353\264\313\262\331\327\367\265\304\326\270\266\250\316\304\274\376\323\320\271\330\301\252\241\243\r\n",
a2=0x2e57ea8 "D:\\abc.ttt", a3=0x0) at eval.c:2078
        used = 4
        buf = "ShellExecute failed:
R\033\366\274\362\210\000\264\362\210\000\000\000\000\000\224\362\210\000\000\000\000\000(<\000\001(\000\000\000\240\362\210\000\"\036\000\000\224\361\210\000\037\001\037u\304\377\210\000\035\004\352w{5r\002\376\377\377\377\372\066\346w\362\062\346w\360\035\250\000\370\035\250\000(<>\001\370\035\250\000(\000\000\000\360\035\250\000\310\362\210\000)>\336u\000\000\246\000\000\000\000\000\370\035\250\000\000\000\000\000\000\000\000\000\060\367\210\000(\000\364\001(<>\001*\000,\000\370\035\250\000\000\000\000\000\370\362\210\000\246[	\001\000\000\000\000\000\000\000\000\203\004\000\000\000\000\000\000(<>\001\364\001\000"
        size = 200
        mlen = 23
        buffer = 0x88f220 "ShellExecute failed: R\033\366\274\362\210"
        args = {
          0x13e3c28
"\303\273\323\320\323\246\323\303\263\314\320\362\323\353\264\313\262\331\327\367\265\304\326\270\266\250\316\304\274\376\323\320\271\330\301\252\241\243\r\n",
0x2e57ea8 "D:\\abc.ttt", 0x0}
        allocated = 0
        string = 2005649611
#6  0x011ceb98 in Fw32_shell_execute (operation=71858641, document=71858577,
    parameters=46147610, show_flag=46147610) at w32fns.c:6356
        current_dir = 71858593
#7  0x01021dbd in Feval (form=48376582) at eval.c:2423
        numargs = 8
        args_left = 46147610
        i = 4
        maxargs = 4
        argvals = {71858641, 71858625, 46147610, 46147610, 6, 21658032,
          8975352, 18102244}
        fun = 20545853
        val = 46147610
        original_fun = 46362274
        original_args = 48376574
        funcar = 17367327
        backtrace = {
          next = 0x88f480,
          function = 0x88f424,
          args = 0x88f390,
          nargs = 2,
          evalargs = 1 '\001',
          debug_on_exit = 0 '\000'
        }
        gcpro1 = {
          next = 0x44556e1,
          var = 0x88f3f4,
          nvars = 0
        }
        gcpro2 = {
          next = 0xc,
          var = 0x88f730,
          nvars = 8975352
        }
        gcpro3 = {
          next = 0x6,
          var = 0x88f390,
          nvars = 4
        }
#8  0x01022cac in Ffuncall (nargs=2, args=0x88f4e0) at eval.c:3072
        fun = 18838957
        original_fun = 46281498
        funcar = 19110065
        numargs = 1
        lisp_numargs = 17442686
        val = 48376582
        backtrace = {
          next = 0x88f6d0,
          function = 0x88f4e0,
          args = 0x88f4e4,
          nargs = 1,
          evalargs = 0 '\000',
          debug_on_exit = 0 '\000'
        }
        internal_args = 0x88f4e4
        i = 47609349
#9  0x0116cf4d in Fbyte_code (bytestr=19109169, vector=19109189, maxdepth=40)
    at bytecode.c:680
        count = 5
        op = 1
        vectorp = 0x1239548
        bytestr_length = 1187
        stack = {
          pc = 0x1369433
"\210\202\300\003\016M\345\235\203\311\001\346\347\016O\206\241\001\f\211A\024@!!\026F\016E\203\274\001\016E\016F\016EAB\241\210\016EA\026E\202\300\003\016F\016SB\211\026S\026E\202\300\003\016M\350\235\203\372\001\347\016O\206\333\001\f\211A\024@!\036T\346\016T!\036U\351\016U!\203\357\001\016U\026T\352\016T\314\331#\210*\202\300\003\016M\353\235\203!\002\347\016O\206\f\002\f\211A\024@!\036T\346\016T!\036U\352\016U\314\331\211$\210*\202\300\003\016M\354\232\203J\002\331\026R\016O\206\065\002\f\211A\024@\211\026F;\204@\002\332\355!\210\356\347\016F!!\210\202\300\003\016M\357\232\203X\002\360"...,
          top = 0x88f4e4,
          bottom = 0x88f4e0,
          byte_string = 19109169,
          byte_string_start = 0x13692a9 "\306 \210\b\203\021",
          constants = 19109189,
          next = 0x88f850
        }
        top = 0x88f4e0
        result = 55
#10 0x010233ea in funcall_lambda (fun=19109141, nargs=1, arg_vector=0x88f734)
    at eval.c:3259
        val = 46186501
        syms_left = 46147610
        next = 47396658
        count = 4
        i = 1
        optional = 0
        rest = 0
#11 0x01022ec9 in Ffuncall (nargs=2, args=0x88f730) at eval.c:3118
        fun = 19109141
        original_fun = 47410514
        funcar = 46186501
        numargs = 1
        lisp_numargs = 16882677
        val = 8976152
        backtrace = {
          next = 0x88f910,
          function = 0x88f730,
          args = 0x88f734,
          nargs = 1,
          evalargs = 0 '\000',
          debug_on_exit = 0 '\000'
        }
        internal_args = 0x88f6f8
        i = 48196830
#12 0x0116cf4d in Fbyte_code (bytestr=19095513, vector=19095533, maxdepth=28)
    at bytecode.c:680
        count = 4
        op = 1
        vectorp = 0x1235ff0
        bytestr_length = 1665
        stack = {
          pc = 0x136bf05 "\210\016N\203$\006\201\332",
          top = 0x88f734,
          bottom = 0x88f730,
          byte_string = 19095513,
          byte_string_start = 0x136b8ed "\306
\020\307\021\n\023\307\024\310\311!\211\035\307=\204\064",
          constants = 19095533,
          next = 0x88fa90
        }
        top = 0x88f730
        result = 0
#13 0x010233ea in funcall_lambda (fun=19095493, nargs=0, arg_vector=0x88f974)
    at eval.c:3259
        val = 46903105
        syms_left = 46147610
        next = 46619562
        count = 4
        i = 0
        optional = 0
        rest = 0
#14 0x01022ec9 in Ffuncall (nargs=1, args=0x88f970) at eval.c:3118
        fun = 19095493
        original_fun = 47394986
        funcar = 224
        numargs = 0
        lisp_numargs = 16882677
        val = 8976728
        backtrace = {
          next = 0x88fc50,
          function = 0x88f970,
          args = 0x88f974,
          nargs = 0,
          evalargs = 0 '\000',
          debug_on_exit = 0 '\000'
        }
        internal_args = 0x88f938
        i = 48277990
#15 0x0116cf4d in Fbyte_code (bytestr=19092985, vector=19093005, maxdepth=24)
    at bytecode.c:680
        count = 2
        op = 0
        vectorp = 0x1235610
        bytestr_length = 220
        stack = {
          pc = 0x136c6af
"\210*\340\341\342\"\210\343\321\344\"\211\036$;\203\251",
          top = 0x88f970,
          bottom = 0x88f970,
          byte_string = 19092985,
          byte_string_start = 0x136c621 "\b\203\b",
          constants = 19093005,
          next = 0x0
        }
        top = 0x88f970
        result = 243858076
#16 0x010233ea in funcall_lambda (fun=19092965, nargs=0, arg_vector=0x88fb20)
    at eval.c:3259
        val = 2011825181
        syms_left = 46147610
        next = 0
        count = 2
        i = 0
        optional = 0
        rest = 0
#17 0x010230d5 in apply_lambda (fun=19092965, args=46147610, eval_flag=1)
    at eval.c:3183
        args_left = 46147610
        numargs = 0
        arg_vector = 0x88fb20
        gcpro1 = {
          next = 0xa6f730,
          var = 0x20,
          nvars = 0
        }
        gcpro2 = {
          next = 0x0,
          var = 0x0,
          nvars = 0
        }
        gcpro3 = {
          next = 0x88fbe0,
          var = 0xa6f730,
          nvars = 8977316
        }
        i = 0
        tem = 8977320
#18 0x01021f4f in Feval (form=46397854) at eval.c:2455
        fun = 19092965
        val = -2089560314
        original_fun = 47396370
        original_args = 46147610
        funcar = 0
        backtrace = {
          next = 0x0,
          function = 0x88fc84,
          args = 0x88fb20,
          nargs = 0,
          evalargs = 0 '\000',
          debug_on_exit = 0 '\000'
        }
        gcpro1 = {
          next = 0x88fd18,
          var = 0x0,
          nvars = 33689212
        }
        gcpro2 = {
          next = 0x88fd18,
          var = 0x88fd1c,
          nvars = 0
        }
        gcpro3 = {
          next = 0x0,
          var = 0x1,
          nvars = 1
        }
#19 0x0100607e in top_level_2 () at keyboard.c:1365
No locals.
#20 0x0102065c in internal_condition_case (bfun=0x100606b <top_level_2>,
    handlers=46205170, hfun=0x1005ce6 <cmd_error>) at eval.c:1509
        val = 0
        c = {
          tag = 46147610,
          val = 46147610,
          next = 0x88fdb0,
          gcpro = 0x0,
          jmp = {8977784, 2130567168, 0, 0, 8977580, 16909812, 8978372, 0,
            16843008, 8977904, 1977456257, 8977728, 1983197756, 1983197840,
            -1, 1977456423},
          backlist = 0x0,
          handlerlist = 0x0,
          lisp_eval_depth = 0,
          pdlcount = 2,
          poll_suppress_count = 0,
          interrupt_input_blocked = 0,
          byte_stack = 0x0
        }
        h = {
          handler = 46205170,
          var = 46147610,
          chosen_clause = 10919024,
          tag = 0x88fcf0,
          next = 0x0
        }
#21 0x010060b0 in top_level_1 () at keyboard.c:1373
No locals.
#22 0x0102014d in internal_catch (tag=46203338, func=0x1006080 <top_level_1>,
    arg=46147610) at eval.c:1245
        c = {
          tag = 46203338,
          val = 46147610,
          next = 0x0,
          gcpro = 0x0,
          jmp = {8977960, 2130567168, 0, 0, 8977820, 16908606, 8978372, 0,
            20846784, 46147610, 46186496, 16882645, 20846784, 3, 1983185040,
            8978008},
          backlist = 0x0,
          handlerlist = 0x0,
          lisp_eval_depth = 0,
          pdlcount = 2,
          poll_suppress_count = 0,
          interrupt_input_blocked = 0,
          byte_stack = 0x0
        }
#23 0x01005ff2 in command_loop () at keyboard.c:1328
No locals.
#24 0x01005902 in recursive_edit_1 () at keyboard.c:950
        count = 1
        val = -2089090643
#25 0x01005a66 in Frecursive_edit () at keyboard.c:1012
        count = 0
        buffer = 46147610
#26 0x0100282d in main (argc=4, argv=0xd111e0) at emacs.c:1782
        dummy = 2130567168
        stack_bottom_variable = 126 '~'
        do_initial_setlocale = 1
        skip_args = 0
        no_loadup = 0
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x11f07f0 "U\211\345\203\354\b\241\214\207\071\001\213"

Lisp Backtrace:
"w32-shell-execute" (0x88f390)
"eval" (0x88f4e4)
"command-line-1" (0x88f734)
"command-line" (0x88f974)
"normal-top-level" (0x88fb20)
(gdb) q
A debugging session is active.

	Inferior 1 [process 3848] will be killed.

Quit anyway? (y or n) error return ../../gdb-7.1/gdb/windows-nat.c:1162 was 5

-- 
Harbin Institute of Technology, China
Chunyu Wang