Mercurial > hg > xemacs-beta
diff tests/reproduce-bugs.el @ 102:a145efe76779 r20-1b3
Import from CVS: tag r20-1b3
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:15:49 +0200 |
parents | |
children | 850242ba4a81 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/reproduce-bugs.el Mon Aug 13 09:15:49 2007 +0200 @@ -0,0 +1,186 @@ +;;; reproduce-bugs.el --- reproduce bugs in XEmacs; + +;; Copyright (C) 1997 Free Software Foundation, Inc. +;; Copyright (C) 1997 Sun Microsystems, Inc. + +;; Keywords: bugs, crash, burn, die, croak, munge + +;; This file is part of XEmacs. + +;; This file is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; XEmacs is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with XEmacs; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +;; 02111-1307, USA. + +;;; Synched up with: Not in FSF. + +;;; Commentary: + +;; Reproduce XEmacs bugs, so that they can get fixed. +;; Especially, make XEmacs crash. +;; You may need to use a debug version of XEmacs to reproduce some of these. + +;; Several global keybindings are created, each of which exhibits a bug. + +;; For XEmacs maintainers and other masochists. + +;; It's a bad idea to rely on code in this file continuing to work in +;; the same way. :-) + +;;; Code: + +(defvar bug-hashtable (make-hashtable 10)) + +(defmacro defbug (bug-number &rest body) + `(puthash ,bug-number (lambda () ,@body) bug-hashtable)) + +(put 'defbug 'lisp-indent-function 'defun) + +(defconst bug-buffer + (save-excursion + (set-buffer (get-buffer-create "*Bug*")) + (erase-buffer) + (current-buffer))) + +;;;####autoload +(defun reproduce-bug (number) + "Reproduce XEmacs bugs, so that they can get fixed. +Especially, make XEmacs crash. +See reproduce-bugs.el for bug descriptions and bug numbers. +A debug version of XEmacs may be needed to reproduce some bugs." + (interactive "nBug Number: ") + (funcall (gethash number bug-hashtable))) + +;;; Change this to your preferred key-binding + +(global-set-key [(control ?Z)] 'reproduce-bug) + +;;;; Bugs follow: + +;;; ------------------------------------------------------------------ +;;; Crash on trace-function +;;; Fatal error: assertion failed, file src/eval.c, line 1405, abort() +(defbug 1 + (trace-function 'record-buffer bug-buffer) + (pop-to-buffer bug-buffer)) + + +;;; ------------------------------------------------------------------ +;;; Crashes with stack overflow +;;; Should give error via barf-if-buffer-read-only +;;; Fatal error: assertion failed, file src/eval.c, line 1874, abort() +;; This bug has been fixed. -sb +(defbug 2 + (switch-to-buffer bug-buffer) + ;; The following line should contain a number of eight-bit characters + (insert "²èÌÌËè¤Î°ÜÆ°¤Ï¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£º£Å٤ϡ¢²èÌ̤ÎÃæ¤Ç¡¢ÆÃÄê¤Î¾ì") + (setq buffer-read-only t) + (ignore-errors + (encode-coding-region (point-min) (point-max) 'euc-japan)) + (garbage-collect)) + + +;;; ------------------------------------------------------------------ +;;; Crashes in debug version only +;;; Fatal error: assertion failed, file src/objects.h, line 149, +;;; RECORD_TYPEP (_obj, lrecord_font_instance) || MARKED_RECORD_P (_obj) +(defbug 3 + (let (glyph ext) + (make-face 'adobe-symbol-face) + (set-face-font + 'adobe-symbol-face + "-adobe-symbol-medium-r-normal--*-140-*-*-p-*-adobe-fontspecific") + (setq glyph (make-glyph (list (vector 'string + :data (char-to-string ?\xD3))))) + (set-glyph-face glyph 'adobe-symbol-face) + (setq ext (make-extent 14 18)) + (set-extent-property ext 'begin-glyph glyph))) + + +;;; ------------------------------------------------------------------ +;;; (maybe?) crash koi8 +;;; ACCL: Invalid command (c) +;;; With debugging on, crashes as follows: +;;; Fatal error: assertion failed, file src/lisp.h, line 1227, INTP (obj) +(defbug 5 + ;;(load "cyrillic") + ;;(load "cyrillic-hooks") + (princ (decode-coding-string "\xe1" 'koi8))) + + +;;; ------------------------------------------------------------------ +;;; Completely Uninterruptible hang in re-search-backward (Was: java-mode) +(defbug 6 + (switch-to-buffer bug-buffer) + (insert "{ +public static void main(String[] args) throws java.io.IOException + { + } +} +") + (goto-char (point-min)) + (search-forward "{" nil nil 2) + (backward-char) + (re-search-backward + "^\\s(\\|\\(^[ \t]*\\(\\(\\(public\\|protected\\|static\\)\\s-+\\)*\\(\\(\\([[a-zA-Z][][_$.a-zA-Z0-9]*[][_$.a-zA-Z0-9]+\\|[[a-zA-Z]\\)\\s-*\\)\\s-+\\)\\)?\\(\\([[a-zA-Z][][_$.a-zA-Z0-9]*\\s-+\\)\\s-*\\)?\\([_a-zA-Z][^][ \t:;.,{}()=]*\\|\\([_$a-zA-Z][_$.a-zA-Z0-9]*\\)\\)\\s-*\\(([^);{}]*)\\)?\\([] \t]*\\)\\(\\s-*\\<throws\\>\\s-*\\(\\([_$a-zA-Z][_$.a-zA-Z0-9]*\\)[, \t\n\r\f]*\\)+\\)?\\s-*\\)\\s(")) + + +;;; ------------------------------------------------------------------ +;;; regexp crash +;; This doesn't crash for me. -sb +(defbug 7 + (string-match "\\(\\s-\\|$\\)" "å")) + + +;;;; ------------------------------------------------------------------- +;;;; Bugs below this line have been fixed. +;;;; Keep these for regression testing +;;;; ------------------------------------------------------------------- + + +;;; ------------------------------------------------------------------ +;;; Infinite recursion crash - Segmentation Fault +(defbug 4 + (switch-to-buffer bug-buffer) + (insert "abcdefg") + (setq e (make-extent 1 4)) + (set-extent-property e 'face 'bold) + (set-extent-property e 'duplicable t) + (set-extent-property e 'replicating t) + (insert (buffer-string)) + (delete-region 8 9)) + + +;;; crash popup frames FIXED +;;(global-set-key +;; [(alt meta control f12)] +;; (lambda () +;; (interactive) +;; (let ((f (selected-frame))) +;; (make-frame `(popup ,(selected-frame))) +;; (make-frame) +;; (sit-for 0) +;; (delete-frame f) +;; (save-buffers-kill-emacs)))) + +;;; crash on delete-frame-hook - FIXED! +;;(global-set-key +;; [(alt meta control f10)] +;; (lambda () +;; (interactive) +;; (setq delete-frame-hook +;; (lambda (frame) +;; (select-frame frame) +;; (kill-buffer (window-buffer (frame-selected-window frame))))))) + +;;; reproduce-bugs.el ends here