Ticket #868 (closed defect: fixed)

Opened 11 months ago

Last modified 8 months ago

scrutinizer makes too strong assumptions about mutable data

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

Description (last modified by felix) (diff)

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

  Changed 11 months ago by felix

  • description modified (diff)

follow-up: ↓ 3   Changed 11 months ago by felix

  • priority changed from major to critical
  • milestone set to 4.8.0

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.

in reply to: ↑ 2   Changed 11 months ago by felix

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.

  Changed 11 months ago by felix

  • status changed from new to closed
  • resolution set to fixed

Pushed to master in ae6af2c1894b8ab8178f21f8169a98c3b5e0327a.

  Changed 8 months ago by felix

  • milestone changed from 4.8.0 to 4.9.0

Milestone 4.8.0 deleted

Note: See TracTickets for help on using tickets.