[Openmcl-devel] openmcl unhandled exception

Gary Byers gb at clozure.com
Sun May 23 19:34:48 PDT 2004


I think that this could fail if there were any blank lines in the input
stream: it copies the contents of STRING-STREAMs to a temporary file
a line at a time, but may try to store a #\Newline character in a 0-length
buffer.

All of this could undoubtedly be done a bit differently, but the simple
short-term fix is to ensure that there's at least one byte's worth of room
in the buffer.

(This is now fixed in both the main and bleeding-edge CVS trees.)

On Sun, 23 May 2004, Cyrus Harmon wrote:

>
> openmcl-devel,
>
> Under 0.14.2-p1 I'm getting an "Unhandled exception 11" when trying to
> call an external program that reads from one stream and writes to
> another. I've tried to create a simple test case to reproduce my
> problem. It seems the problem occurs for me when the stream starts with
> an empty line. An example follows. Has anyone seen this kind of thing
> before?
>
> Thanks,
>
> Cyrus
>
>
> (defun stream-test (sometext)
>    (with-input-from-string
>        (instr sometext)
>      (let ((gstring (with-output-to-string
> 		     (gstream)
> 		     (run-program "cat"
> 				  (list)
> 				  :input instr
> 				  :output gstream))))
>        (print gstring))))
>
> (defun print-test (sometext)
>    (print sometext))
>
> (print-test "This is a test!")
>
> (print-test "
> This is a test!")
>
> (stream-test "This is a test!")
>
> (stream-test "this works
> This is a test!")
>
> (stream-test "
> But this doesn't. This is a test!")
>
>
> And the output:
>
> ? (load "pipetest.cl")
> "This is a test!"
> "
> This is a test!"
> "This is a test!"
> "this breaks
> This is a test!"
> #P"/Users/sly/projects/wing/test/lisp/pubmed/pipetest.cl"
> ? (load "pipetest.cl")
> "This is a test!"
> "
> This is a test!"
> "This is a test!" Unhandled exception 11 at 0x00004c18, context->regs
> at #xf0135618
> Write operation to unmapped address 0x0a2948c8
> ? for help
>
>
> [926] OpenMCL kernel debugger: b
>
>
> (#xF0135B00) #x0202325C : #<Function LOAD-BYTE #x0601bdb6> + 144
> (#xF0135B10) #x020FB394 : #<Function PIPE #x060faece> + 120
> (#xF0135B20) #x00004D7C : (subprimitive _ret1valn)
> (#xF0135B30) #x020FABD8 : #<Function GET-DESCRIPTOR-FOR #x060f938e> +
> 1636
> (#xF0135B40) #x00004D7C : (subprimitive _ret1valn)
> (#xF0135B50) #x020F9630 : #<Function RUN-PROGRAM #x060f81de> + 764
> (#xF0135B60) #x020F947C : #<Function RUN-PROGRAM #x060f81de> + 328
> (#xF0135B70) #x06454CE0 : #<Function STREAM-TEST #x06454d5e> + 244
> (#xF0135B80) #x06454C7C : #<Function STREAM-TEST #x06454d5e> + 144
> (#xF0135B90) #x06454C24 : #<Function STREAM-TEST #x06454d5e> + 56
> (#xF0135BA0) #x00004D7C : (subprimitive _ret1valn)
> (#xF0135BB0) #x0211F994 : #<Function CALL-CHECK-REGS #x06127e0e> + 72
> (#xF0135BC0) #x02107788 : #<Function LOAD-FROM-STREAM #x06107066> + 220
> (#xF0135BD0) #x02107E10 : #<Function %LOAD #x06107496> + 1316
> (#xF0135BE0) #x02107D74 : #<Function %LOAD #x06107496> + 1160
> (#xF0135BF0) #x00004D7C : (subprimitive _ret1valn)
> (#xF0135C00) #x02108188 : #<Function LOAD #x06107a7e> + 636
> (#xF0135C10) #x021081E4 : #<Function LOAD #x06107a7e> + 728
> (#xF0135C20) #x00004D7C : (subprimitive _ret1valn)
> (#xF0135C30) #x0211F994 : #<Function CALL-CHECK-REGS #x06127e0e> + 72
> (#xF0135C40) #x00004D7C : (subprimitive _ret1valn)
> (#xF0135C50) #x0211E554 : #<Function TOPLEVEL-EVAL #x06126246> + 152
> (#xF0135C60) #x0211EB10 : #<Function READ-LOOP #x06126846> + 844
> (#xF0135C70) #x0211EB48 : #<Function READ-LOOP #x06126846> + 900
> (#xF0135C80) #x0211EB74 : #<Function READ-LOOP #x06126846> + 944
> (#xF0135C90) #x0211EBA0 : #<Function READ-LOOP #x06126846> + 988
> (#xF0135CA0) #x0211F8E0 : #<Function TOPLEVEL-LOOP #x06127bde> + 44
> (#xF0135CB0) #x0211F8E8 : #<Function TOPLEVEL-LOOP #x06127bde> + 52
> (#xF0135CC0) #x02108720 : #<Anonymous Function #x06108b36> + 68
> (#xF0135CD0) #x00004D7C : (subprimitive _ret1valn)
> (#xF0135CE0) #x021323EC : #<Anonymous Function #x0614f64e> + 592
> (#xF0135CF0) #x021321EC : #<Anonymous Function #x0614f64e> + 80
> (#xF0135D00) #x0210D044 : #<Function RUN-PROCESS-INITIAL-FORM
> #x06111c0e> + 400
> (#xF0135D10) #x0210D080 : #<Function RUN-PROCESS-INITIAL-FORM
> #x06111c0e> + 460
> (#xF0135D20) #x0210D194 : #<Function RUN-PROCESS-INITIAL-FORM
> #x06111c0e> + 736
> (#xF0135D30) #x00004D7C : (subprimitive _ret1valn)
> (#xF0135D40) #x0210D314 : #<Anonymous Function #x06111d3e> + 152
> (#xF0135D50) #x0210D2FC : #<Anonymous Function #x06111d3e> + 128
> (#xF0135D60) #x02105450 : #<Anonymous Function #x0610491e> + 172
> (#xF0135D70) #x0000881C : (subprimitive toplevel_loop)
> (#xF0135D80) #x00008828 : (subprimitive toplevel_loop)
> (#xf0135d90) #x000088F4 : _start_lisp + 180
> (#xf0135e50) #x00012CAC : _lisp_thread_entry + 152
> (#xf0135eb0) #x900247E8 : __pthread_body + 40
> (#xf0135f00) #x00000000 : (null) + 0
>
>
> cstack area #x003005b0
>
>
> (#xBFFFE870) #x02106248 : #<Function %NANOSLEEP #x06105946> + 268
> (#xBFFFE880) #x02108588 : #<Anonymous Function #x06108a5e> + 300
> (#xBFFFE890) #x021085AC : #<Anonymous Function #x06108a5e> + 336
> (#xBFFFE8A0) #x021085B4 : #<Anonymous Function #x06108a5e> + 344
> (#xBFFFE8B0) #x021085E8 : #<Anonymous Function #x06108a5e> + 396
> (#xBFFFE8C0) #x0000881C : (subprimitive toplevel_loop)
> (#xBFFFE8D0) #x00008828 : (subprimitive toplevel_loop)
> (#xbfffe8e0) #x000088F4 : _start_lisp + 180
> [926] OpenMCL kernel debugger:
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>
>
-------------- next part --------------
Index: level-1/linux-files.lisp
===================================================================
RCS file: /usr/local/tmpcvs/ccl-0.14/ccl/level-1/linux-files.lisp,v
retrieving revision 1.7
diff -u -r1.7 linux-files.lisp
--- level-1/linux-files.lisp	5 May 2004 20:05:52 -0000	1.7
+++ level-1/linux-files.lisp	23 May 2004 23:35:41 -0000
@@ -586,7 +586,7 @@
 		  (unless line
 		    (return))
 		  (let* ((len (length line)))
-		    (%stack-block ((buf len))
+		    (%stack-block ((buf (1+ len)))
 		      (%copy-ivector-to-ptr line 0 buf 0 len)
 		      (fd-write fd buf len)
 		      (if no-newline


More information about the Openmcl-devel mailing list