#2 Message “cause called with bad routine address”

open
nobody
None
5
2012-12-18
2012-07-12
Hibou57
No

Following the NyQuist MIDI Tutorial, step by step, I ended with an abnormal program termination with a message saying “cause called with bad routine address: 0x808e4ed”.

Step to reproduce.

Copy the attached MIDI file in a directory.
Open a console in that directory.
Start the NY interpreter.

Run this in turn:

(setf my-seq (seq-create))
(type-of my-seq)
(setf midi-file (open-binary "demo.mid"))
(seq-read-smf my-seq midi-file)
(close midi-file)
(setf midi-file (open-binary "copy.mid" :direction :output))
(seq-write-smf my-seq midi-file)

There, the “copy.mid” file should be a copy of the scores contained in “demo.mid”, which is 1601 bytes long, but “copy.mid” is only 37 bytes long, NY exits and I get the error “cause called with bad routine address: 0x808e4ed”.

Discussion

  • Hibou57
    Hibou57
    2012-07-12

    The MIDI file which cause the error

     
    Attachments
  • Hibou57
    Hibou57
    2012-07-17

    The above was for Nyquist 2.69 on Ubuntu Maverick. I tested the same with Nyquist 3.05 on Ubuntu Precise. There is an error too, but a different way.

    First, with Nyquist 3.05, the documentation is erroneous. First, the page “demos/midi_tutorial.htm” says “(seq-write-smf my-seq midi-file t)” instead of “(seq-write-smf my-seq midi-file)”. Second, it does not fail on “(seq-write-smf my-seq midi-file)”, but crash on “(close midi-file)”, with a core dump. Surprinsingly, although it crash with a core dump on “(close midi-file)”, the resulting “copy.mid” file is complete and valid.