*** empty log message ***
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@1043 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
6a75d99105
commit
23a520cadc
2 changed files with 70 additions and 5 deletions
65
SWIG/Tools/WAD/Test/death.py
Normal file
65
SWIG/Tools/WAD/Test/death.py
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
import debug
|
||||||
|
from Tkinter import *
|
||||||
|
|
||||||
|
def death_by_segmentation():
|
||||||
|
debug.seg_crash()
|
||||||
|
|
||||||
|
def death_by_bus():
|
||||||
|
debug.bus_crash()
|
||||||
|
|
||||||
|
def death_by_abort():
|
||||||
|
debug.abort_crash(-1)
|
||||||
|
|
||||||
|
def death_by_math():
|
||||||
|
debug.math_crash(37,0)
|
||||||
|
|
||||||
|
def death_by_buffer():
|
||||||
|
debug.overflow_crash()
|
||||||
|
|
||||||
|
def death(f):
|
||||||
|
ty = f.tvar.get()
|
||||||
|
if ty == 1:
|
||||||
|
death_by_segmentation()
|
||||||
|
elif ty == 2:
|
||||||
|
death_by_abort()
|
||||||
|
elif ty == 3:
|
||||||
|
death_by_math()
|
||||||
|
elif ty == 4:
|
||||||
|
death_by_bus()
|
||||||
|
elif ty == 5:
|
||||||
|
death_by_buffer()
|
||||||
|
|
||||||
|
class death_options(Frame):
|
||||||
|
def __init__(self):
|
||||||
|
Frame.__init__(self)
|
||||||
|
tvar = IntVar()
|
||||||
|
Radiobutton(self,text="Segmentation fault", variable=tvar, value=1).pack(anchor=W)
|
||||||
|
Radiobutton(self,text="Failed assertion", variable=tvar, value=2).pack(anchor=W)
|
||||||
|
Radiobutton(self,text="Math error", variable=tvar, value=3).pack(anchor=W)
|
||||||
|
Radiobutton(self,text="Bus error", variable=tvar, value=4).pack(anchor=W)
|
||||||
|
Radiobutton(self,text="Stack overflow", variable=tvar, value=5).pack(anchor=W)
|
||||||
|
Button(self,text="Die", command=lambda x=self: death(x)).pack(expand=1, fill=BOTH)
|
||||||
|
self.tvar = tvar
|
||||||
|
tvar.set(1)
|
||||||
|
|
||||||
|
def death_wizard():
|
||||||
|
root = Tk()
|
||||||
|
l = Label(text="How would you like to die today?")
|
||||||
|
l.pack()
|
||||||
|
death_options().pack()
|
||||||
|
root.title("Death Wizard")
|
||||||
|
death_wizard()
|
||||||
|
|
||||||
|
#root.mainloop()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -12,6 +12,8 @@
|
||||||
typedef double Real;
|
typedef double Real;
|
||||||
typedef Real Float;
|
typedef Real Float;
|
||||||
|
|
||||||
|
char buffer[256];
|
||||||
|
|
||||||
/* A simple segmentation fault on an uninitialized pointer */
|
/* A simple segmentation fault on an uninitialized pointer */
|
||||||
int seg_crash() {
|
int seg_crash() {
|
||||||
int *a = 0;
|
int *a = 0;
|
||||||
|
|
@ -40,12 +42,10 @@ int overflow_crash() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A simple bus error. This might fail silently on certain platforms */
|
/* A simple bus error. */
|
||||||
int bus_crash() {
|
int bus_crash() {
|
||||||
int b;
|
double *a = (double *) (buffer+1);
|
||||||
int *a = &b;
|
*a = 3.4;
|
||||||
a = (int *) ((int) a | 0x1);
|
|
||||||
*a = 3;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue