It looks like my example was incomplete. It turns out loading and passing in an srfi-9 record is critical to instantiating the bug.
Why? I'm not sure... (use-modules (oop goops) (srfi srfi-9)) (define-class <some-class> ()) (define-record-type <some-record> (make-some-record foo) some-record? (foo some-record-foo)) (define-method (time-to-break (some-class <some-class>) not-a-class) (display "We're never going home are we?\n")) ;; Now it'll break (time-to-break (make <some-class>) (make-some-record 1))