Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#868 closed defect (fixed)

scrutinizer makes too strong assumptions about mutable data

Reported by: felix winkelmann Owned by: felix winkelmann
Priority: critical Milestone: 4.9.0
Component: scrutinizer Version: 4.7.x
Keywords: Cc:
Estimated difficulty:

Description (last modified by felix winkelmann)

Like this:

(define foo (make-vector 1 #f))
(vector-set! foo 0 'sym)
(print (get (vector-ref foo 0) 'a))

When compiled in block mode, we get:

Warning: at toplevel:
  (x.scm:5) in procedure call to `get', expected argument #1 of type `symbol', but was given an argument of type `boolean'

Change History (5)

comment:1 Changed 9 years ago by felix winkelmann

Description: modified (diff)

comment:2 Changed 9 years ago by felix winkelmann

Milestone: 4.8.0
Priority: majorcritical

The entries for make-vector and cons, list and all other constructors probably have to be weakened in types.db - the returned data may be mutated and so can change type.

comment:3 in reply to:  2 Changed 9 years ago by felix winkelmann

Replying to felix:

The entries for make-vector and cons, list and all other constructors probably have to be weakened in types.db - the returned data may be mutated and so can change type.

That's nonsense, actually. The real problem is that smashing happens only for env + blist entries, not for globals.

comment:4 Changed 9 years ago by felix winkelmann

Resolution: fixed
Status: newclosed

Pushed to master in ae6af2c1894b8ab8178f21f8169a98c3b5e0327a.

comment:5 Changed 9 years ago by felix winkelmann

Milestone: 4.8.04.9.0

Milestone 4.8.0 deleted

Note: See TracTickets for help on using tickets.