This is the first one of these I have seen in a while. I was running a program in the python IDE version: Python 2.3 (#2, Jul 30 2003, 11:45:28) [GCC 3.1 20020420 (prerelease)] on darwin IDE version 1.0.1 and hit Command-period to terminate the program. I got the following exciting result: ********** Date/Time: 2003-10-16 12:09:58 -0500 OS Version: 10.2.8 (Build 6R73) Host: mendenhall.fel.Vanderbilt.Edu Command: Python PID: 9368 Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_INVALID_ADDRESS (0x0001) at 0xf00fcee8 Thread 0 Crashed: #0 0x91ac2b5c in InternalDisplayChangedProc #1 0x90163230 in __CFRunLoopDoTimer #2 0x90148d28 in __CFRunLoopRun #3 0x90180f58 in CFRunLoopRunSpecific #4 0x969a3b70 in RunCurrentEventLoopInMode #5 0x969a41f4 in GetNextEventMatchingMask #6 0x969a8054 in WNEInternal #7 0x969adf0c in WaitNextEvent #8 0x001d8724 in init_Evt #9 0x10077090 in call_function (ceval.c:3440) #10 0x10074c68 in eval_frame (ceval.c:2117) #11 0x10075f80 in PyEval_EvalCodeEx (ceval.c:2663) #12 0x10077374 in fast_function (ceval.c:3529) #13 0x10077168 in call_function (ceval.c:3458) #14 0x10074c68 in eval_frame (ceval.c:2117) #15 0x10075f80 in PyEval_EvalCodeEx (ceval.c:2663) #16 0x10077374 in fast_function (ceval.c:3529) #17 0x10077168 in call_function (ceval.c:3458) #18 0x10074c68 in eval_frame (ceval.c:2117) #19 0x10075f80 in PyEval_EvalCodeEx (ceval.c:2663) #20 0x10077374 in fast_function (ceval.c:3529) #21 0x10077168 in call_function (ceval.c:3458) #22 0x10074c68 in eval_frame (ceval.c:2117) #23 0x10075f80 in PyEval_EvalCodeEx (ceval.c:2663) #24 0x10025a1c in function_call (funcobject.c:504) #25 0x1000c66c in PyObject_Call (abstract.c:1756) #26 0x10015afc in instancemethod_call (classobject.c:2433) #27 0x1000c66c in PyObject_Call (abstract.c:1756) #28 0x10076f24 in PyEval_CallObjectWithKeywords (ceval.c:3347) #29 0x1000edec in PyInstance_New (classobject.c:576) #30 0x1000c66c in PyObject_Call (abstract.c:1756) #31 0x10077498 in do_call (ceval.c:3644) #32 0x10077180 in call_function (ceval.c:3461) #33 0x10074c68 in eval_frame (ceval.c:2117) #34 0x10075f80 in PyEval_EvalCodeEx (ceval.c:2663) #35 0x10078df4 in PyEval_EvalCode (ceval.c:537) #36 0x100a9c54 in run_node (pythonrun.c:1206) #37 0x100a9400 in PyRun_SimpleFileExFlags (pythonrun.c:805) #38 0x100b5bd0 in Py_Main (main.c:415) #39 0x00001b5c in 0x1b5c #40 0x000019dc in 0x19dc PPC Thread State: srr0: 0x91ac2b5c srr1: 0x0000f030 vrsave: 0x00000000 xer: 0x20000000 lr: 0x91ac2b48 ctr: 0x91ac2b3c mq: 0x00000000 r0: 0x90163230 r1: 0xbfffe200 r2: 0x44024244 r3: 0x000ea020 r4: 0xf00fcee8 r5: 0x00000000 r6: 0x00000001 r7: 0x00000000 r8: 0xa0131c4c r9: 0xa0001048 r10: 0x000449d0 r11: 0xa0132e30 r12: 0x91ac2b3c r13: 0x01cce63c r14: 0x00000000 r15: 0x00000001 r16: 0x00000000 r17: 0x00000000 r18: 0x24024244 r19: 0x00000000 r20: 0x00000000 r21: 0x00000000 r22: 0xa1a52b48 r23: 0x000449a8 r24: 0x00000001 r25: 0xa01330f4 r26: 0x0000139d r27: 0xae987242 r28: 0xa0131674 r29: 0x000ea028 r30: 0xa1a5044c r31: 0x91ac2b48 The only slightly unusual thing about the program is that I was using signal handlers, which I haven't done a lot of before. Here is the program, for reference: from data_acquisition import LabPro_USB import time import Numeric import signal class mylabpro(LabPro_USB.LabPro_USB): def send_string(self, s='s', delay=0.05): #print s LabPro_USB.LabPro_USB.send_string(self, s, delay) keep_running=1 create_new_file=0 def handle_SIGINT(signum, frame): global keep_running keep_running=0 def handle_SIGHUP(signum, frame): global create_new_file create_new_file=1 def rt_test(): badloops=0 logfile=file("datagrab.txt","ab") lp=mylabpro(1) signal.signal(signal.SIGHUP, handle_SIGHUP) signal.signal(signal.SIGINT, handle_SIGINT) try: try: lp.wake() lp.reset() print lp.get_system_config() #just to vacuum the connection lp.setup_channel(chan=1, operation=1) #set up -10-10 volts readback #lp.setup_channel(chan=2, operation=1) #set up -10-10 volts readback #lp.setup_channel(chan=3, operation=14) #set up default 0-5 #lp.setup_channel(chan=4, operation=1) #set up default 0-5 #lp.setup_channel(chan=21, operation=1) #set up digital #lp.setup_channel(chan=22, operation=1) #set up digital lp.binary_mode(blocking_factor=1) samptime=0.101 lp.setup_data_collection(samptime=samptime, numpoints=-1, rectime=0) rtdata=[] starttime=time.time() laststamp=0.0 while(keep_running): time.sleep(0.01) newdata=lp.get_data_binary_realtime(channels=1) #rtdata+=newdata if newdata: timestamp=lp.data_timestamp fdata=Numeric.array(newdata,Numeric.Float) linevolts=lp.scale_binary_data(fdata[:,0],(-10.,10.)) #feedback=lp.scale_binary_data(fdata[:,1],(-10.,10.)) timevals=Numeric.add.accumulate(fdata[:,-1])+laststamp for i in range(len(newdata)): logfile.write("%.3f\t%.4f\t%.3f\n" % (timestamp, timevals[i], linevolts[i])) laststamp=timevals[-1] lp.stop() newdata=lp.get_data_binary_realtime(channels=1) finally: try: logfile.close() except: pass lp.close() except: import traceback traceback.print_exc() pass signal.signal(signal.SIGHUP, signal.SIG_DFL) signal.signal(signal.SIGINT, signal.SIG_DFL) rt_test() Anyone want to try to trace this down? Marcus Mendenhall
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4