Opened 10 years ago

Closed 10 years ago

#608 closed defect (fixed)

crash involving watch and multiple values?

Reported by: rme Owned by: rme
Priority: normal Milestone:
Component: Runtime (threads, GC) Version: trunk
Keywords: Cc:

Description

An oddity observed while testing.

Welcome to Clozure Common Lisp Version 1.4-dev-r13004M  (DarwinX8664)!
? (defvar *f* (make-array '(2 2) :element-type 'double-float))
*F*
? (watch *f*)
#2A((0.0D0 0.0D0) (0.0D0 0.0D0))
? (watch (array-data-and-offset *f*))
Unhandled exception 11 at 0x27777, context->regs at #xb029aa20
Exception occurred while executing foreign code
 at signal_handler + 135
? for help
[73105] Clozure CL kernel debugger: b

Frame pointer [#xb029b390] in unknown area.
[73105] Clozure CL kernel debugger: l
[73105] Clozure CL kernel debugger: r
%rax = 0x0000000000000000      %r8  = 0x0000000001001400
%rcx = 0x00000000b029aeb0      %r9  = 0x000000000001857c
%rdx = 0x0000000000504f10      %r10 = 0x000030004014101c
%rbx = 0x0000000000500000      %r11 = 0x0000000000504f10
%rsp = 0x00000000b029aef8      %r12 = 0x0000000000000000
%rbp = 0x0000000000000000      %r13 = 0x000000000000031a
%rsi = 0x0000000000504f10      %r14 = 0x000000ff0000037f
%rdi = 0x0000000000500000      %r15 = 0x0000000000000000
%rip = 0x0000000000027777   %rflags = 0x00010246
[73105] Clozure CL kernel debugger: t
Current Thread Context Record (tcr) = 0x504f10
Control (C) stack area:  low = 0xb0038000, high = 0xb029c000
Value (lisp) stack area: low = 0x1800000, high = 0x1a11000
Exception stack pointer = 0xb029aef8
[73105] Clozure CL kernel debugger: 

Crash doesn't happen if the array header isn't watched.

Change History (2)

comment:1 Changed 10 years ago by rme

Similar crash:

? (defun watch-list (list)
    (maplist #'watch list))
WATCH-LIST
? (watch-list (list 'foo 'bar' baz))
Unhandled exception 11 at 0x27777, context->regs at #xb029aa20
Exception occurred while executing foreign code
 at signal_handler + 135
? for help

comment:2 Changed 10 years ago by rme

  • Resolution set to fixed
  • Status changed from new to closed

(In [13008]) When updating pointer-bearing areas after copying a newly-watched object to its own gc area, unprotect the watched areas, since newly-watched objects might refer to objects in other watched areas (particularly in the case of a chain of cons cells).

Fixes ticket:608.

Note: See TracTickets for help on using tickets.