home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / gnu / utils / bug / 1510 < prev    next >
Encoding:
Text File  |  1992-09-08  |  3.5 KB  |  88 lines

  1. Newsgroups: gnu.utils.bug
  2. Path: sparky!uunet!cis.ohio-state.edu!wri.com!brewer
  3. From: brewer@wri.com (Robert Brewer)
  4. Subject: Bus Error in GNU egrep 1.6
  5. Message-ID: <199209080321.AA19328@dragonfly.wri.com>
  6. Sender: gnulists@ai.mit.edu
  7. Organization: GNUs Not Usenet
  8. Distribution: gnu
  9. Date: Mon, 7 Sep 1992 17:21:35 GMT
  10. Approved: bug-gnu-utils@prep.ai.mit.edu
  11. Lines: 75
  12.  
  13. I have been trying to use GNU e?grep 1.6 in a project I have been working on.
  14. However I have found the following series of patterns that causes GNU egrep to
  15. crash. Interestingly enough, the crash appears to be in the actual parsing of
  16. the regexp, because all the crashes can be replicated using stdin as input. 
  17. There appears to be a set of regexps that cause the crash, but I am not sure
  18. what the pattern is. Here is a sampling of the problem (fiji is a NeXTstation
  19. running NeXTStep 2.0):
  20.  
  21. fiji [53] grep> set key=WoofUser
  22. fiji [54] grep> eggrep -i "(^#Title:.*\<$key)|(^#Keywords:.*\<$key)|(^#Summary:.
  23. *\<$key)"
  24. Bus error
  25. fiji [55] grep> set key=FoowUser
  26. fiji [56] grep> eggrep -i "(^#Title:.*\<$key)|(^#Keywords:.*\<$key)|(^#Summary:.
  27. *\<$key)"
  28. Segmentation fault
  29. fiji [57] grep> set key=FowoUser
  30. fiji [58] grep> eggrep -i "(^#Title:.*\<$key)|(^#Keywords:.*\<$key)|(^#Summary:.
  31. *\<$key)"
  32. Segmentation fault
  33. fiji [59] grep> set key=AabbUser
  34. fiji [60] grep> eggrep -i "(^#Title:.*\<$key)|(^#Keywords:.*\<$key)|(^#Summary:.
  35. *\<$key)"
  36. ^Cfiji [61] grep>
  37.  
  38. Note that the strings "WoofUser", "FoowUser", and "FowoUser" all cause crashes.
  39. However "AabbUser" does not. I have been unable to find a pattern to the
  40. strings that crash, but the list above is far from complete.
  41.  
  42. I made a brief attempt to find out what was going on with gdb:
  43.  
  44. fiji [22] grep-1.6> gdb egrep
  45. GDB -- NeXT Release 2.0 (v19) -- GNU version 3.1
  46. Copyright (C) 1988 Free Software Foundation, Inc.
  47. There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details.
  48. GDB is free software and you are welcome to distribute copies of it
  49. under certain conditions; type "info copying" to see the conditions.
  50. Reading symbol data from egrep...
  51. Reading symbol data from /usr/shlib/libsys_s.B.shlib...
  52. Reading Objective-C data...
  53. done.
  54. Type "help" for a list of commands.
  55. (gdb) run -i "(^#Title:.*\<WoofUser)|(^#Keywords:.*\<WoofUser)|(^#Summary:.*\<Wo
  56. ofUser)"
  57. Starting program: /users/support/EArchive/paul/grep/grep-1.6/egrep -i "(^#Title:
  58. .*\<WoofUser)|(^#Keywords:.*\<WoofUser)|(^#Summary:.*\<WoofUser)"
  59.  
  60. Program generated(1): Memory access exception on address 0x28 (protection failur
  61. e).
  62. 0x5007108 in strlen ()
  63. (gdb) backtrace
  64. #0  0x5007108 in strlen ()
  65. #1  0x690e in istrstr (lookin=(char *) 0x27c6c "woofuser", lookfor=(char *) 0x28
  66.  <Address 0x28 out of bounds>) (dfa.c line 1871)
  67. #2  0x6a1c in enlist (cpp=(char **) 0x27c08, new=(char *) 0x27bd4 "woofuser", le
  68. n=8) (dfa.c line 1928)
  69. #3  0x6b8c in addlists (old=(char **) 0x27c08, new=(char **) 0x27c60) (dfa.c lin
  70. e 1997)
  71. #4  0x6c42 in inboth (left=(char **) 0x261e8, right=(char **) 0x26024) (dfa.c li
  72. ne 2031)
  73. #5  0x6fca in regmust (reg=(struct regexp *) 0xc60e) (dfa.c line 2153)
  74. #6  0x665c in regcompile (s=(char *) 0x3fffdc8 "(^#Title:.*\\<WoofUser)|(^#Keywo
  75. rds:.*\\<WoofUser)|(^#Summary:.*\\<WoofUser)", len=73, r=(struct regexp *) 0xc60
  76. e, searchflag=1) (dfa.c line 1713)
  77. #7  0xaa7e in main (argc=3, argv=(char **) 0x3fffd38) (./grep.c line 769)
  78. (gdb)
  79.  
  80. I would be interested in any fixes or workarounds, as I really need to use this
  81. regexp.
  82.  
  83. Thanks.
  84.  
  85. P.S.    I also tried this on a DECstation 5500 running Ultrix and it crashed in
  86. the same way.
  87.  
  88.