bytheway@CS.UTAH.EDU (Sidney G Bytheway) (01/20/90)
--------------------------
I sent this message to you earlier this week but have since discoverd that
mail is not comming back to the site I asked you to send the reply to.
So I am re-sending this message from a machine that I know can receive mail.
--------------------------
I have a copy of emacs-dist-18.55 on my IBM PS/2 running AIX 1.2. When I
try to make emacs the command "./temacs -batch -l inc-vers" core dumps on a
segmentation fault on line 1249 of file regex.c. I looked in the PROBLEMS
listing and cannot find my problem there. To make sure I have the most
recent version of emacs I ftped to prep.ai.mit.edu and could not find a newer
version, nor could I see any additional problem files.
Could you help me out here? I have included a dbx session where I ran the
failing command tracing the variable that caused the segmentation fault.
I listed the code that received the segmentation fault, and the code where
the variable received it's bad value.
Thank You,
Sid Bytheway (bytheway@cs.utah.edu)
University of Utah Super Computing Institute
-----------------------------------------------------------------------------
Script started on Tue Jan 16 09:51:03 1990
1 bumps>dbx temacs
dbx version 1.1 of AIX.
Type 'help' for help.
reading symbolic information ...
[using memory image in core]
re_match_2(pbufp = (nil), string1 = "text", size1 = 1, string2 = (nil), size2 = 0, pos = 0, regs = (nil), mstop = 0), line 1249 in "regex.c"
(dbx) trace regex.re_match_2.p
[1] trace regex.re_match_2.p in re_match_2
(dbx) run -batch -l inc-vers
Loading inc-vers...
initially (at line 1158 in "regex.c"): regex.re_match_2.p = "^A^Oemacs-version "^E\n"
after line 1249 in "regex.c": regex.re_match_2.p = "^Oemacs-version "^E\n"
after line 1566 in "regex.c": regex.re_match_2.p = "emacs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "macs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "acs-version "^E\n"
after line 1057 in "regex.c": regex.re_match_2.p = "^A^Oemacs-version "^E\n"
after line 1249 in "regex.c": regex.re_match_2.p = "^Oemacs-version "^E\n"
after line 1566 in "regex.c": regex.re_match_2.p = "emacs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "macs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "acs-version "^E\n"
after line 1057 in "regex.c": regex.re_match_2.p = "^A^Oemacs-version "^E\n"
after line 1249 in "regex.c": regex.re_match_2.p = "^Oemacs-version "^E\n"
after line 1566 in "regex.c": regex.re_match_2.p = "emacs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "macs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "acs-version "^E\n"
.
.
.
after line 1057 in "regex.c": regex.re_match_2.p = "^A^Oemacs-version "^E\n"
after line 1249 in "regex.c": regex.re_match_2.p = "^Oemacs-version "^E\n"
after line 1566 in "regex.c": regex.re_match_2.p = "emacs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "macs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "acs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "cs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "s-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "version "^E\n"
after line 1057 in "regex.c": regex.re_match_2.p = "^A^Oemacs-version "^E\n"
after line 1249 in "regex.c": regex.re_match_2.p = "^Oemacs-version "^E\n"
after line 1566 in "regex.c": regex.re_match_2.p = "emacs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "macs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "acs-version "^E\n"
after line 1057 in "regex.c": regex.re_match_2.p = "^A^Oemacs-version "^E\n"
after line 1249 in "regex.c": regex.re_match_2.p = "^Oemacs-version "^E\n"
after line 1566 in "regex.c": regex.re_match_2.p = "emacs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "macs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "acs-version "^E\n"
after line 1057 in "regex.c": regex.re_match_2.p = "^A^Oemacs-version "^E\n"
after line 1249 in "regex.c": regex.re_match_2.p = "^Oemacs-version "^E\n"
after line 1566 in "regex.c": regex.re_match_2.p = "emacs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "macs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "acs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "cs-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "s-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "-version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "version "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "ersion "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "rsion "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "sion "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "ion "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "on "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "n "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = " "^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = ""^E\n"
after line 1572 in "regex.c": regex.re_match_2.p = "^E\n"
after line 1249 in "regex.c": regex.re_match_2.p = "\n"
after line 1381 in "regex.c": regex.re_match_2.p = ""
after line 1383 in "regex.c": regex.re_match_2.p = "^K^E"
after line 1249 in "regex.c": regex.re_match_2.p = "^E"
after line 1335 in "regex.c": regex.re_match_2.p = "^G\0363\0377^H^C"
after line 1249 in "regex.c": regex.re_match_2.p = "\0363\0377^H^C"
after line 1392 in "regex.c": regex.re_match_2.p = "\0377^H^C"
after line 1394 in "regex.c": regex.re_match_2.p = "^H^C"
after line 1422 in "regex.c": regex.re_match_2.p = "\0363\0377^H^C"
after line 1438 in "regex.c": regex.re_match_2.p = "\0377^H^C"
after line 1440 in "regex.c": regex.re_match_2.p = (invalid char ptr (0x859599))
segmentation violation in re_match_2 at line 1249 in file "regex.c"
1249 switch ((int) ((enum regexpcode) *p++))
(dbx) list 1230,1260
1230 }
1231 if (regstart_seg1[mcnt])
1232 regs->start[mcnt] = regstart[mcnt] - string1;
1233 else
1234 regs->start[mcnt] = regstart[mcnt] - string2 + size1;
1235 if (regend_seg1[mcnt])
1236 regs->end[mcnt] = regend[mcnt] - string1;
1237 else
1238 regs->end[mcnt] = regend[mcnt] - string2 + size1;
1239 }
1240 }
1241 if (dend == end_match_1)
1242 return (d - string1 - pos);
1243 else
1244 return d - string2 + size1 - pos;
1245 }
1246
1247 /* Otherwise match next pattern command */
1248 #ifdef SWITCH_ENUM_BUG
1249 switch ((int) ((enum regexpcode) *p++))
1250 #else
1251 switch ((enum regexpcode) *p++)
1252 #endif
1253 {
1254
1255 /* \( is represented by a start_memory, \) by a stop_memory.
1256 Both of those commands contain a "register number" argument.
1257 The text matched within the \( and \) is recorded under that number.
1258 Then, \<digit> turns into a `duplicate' command which
1259 is followed by the numeric value of <digit> as the register number. */
1260
(dbx) list 1430,1450
1430 back to the start, where another failure point will be made
1431 which will point after all the repetitions found so far. */
1432
1433 case finalize_jump:
1434 stackp -= 2;
1435
1436 case jump:
1437 nofinalize:
1438 mcnt = *p++ & 0377;
1439 mcnt += SIGN_EXTEND_CHAR (*(char *)p) << 8;
1440 p += mcnt + 1; /* The 1 compensates for missing ++ above */
1441 break;
1442
1443 case dummy_failure_jump:
1444 if (stackp == stacke)
1445 {
1446 unsigned char **stackx
1447 = (unsigned char **) alloca (2 * (stacke - stackb)
1448 * sizeof (char *));
1449 bcopy (stackb, stackx, (stacke - stackb) * sizeof (char *));
1450 stackp = stackx + (stackp - stackb);
(dbx) quit
2 bumps>exit
3 bumps>
script done on Tue Jan 16 09:56:12 1990