• check failed:no matching expression

Jan 23, 2008 at 10:24pm

• check failed:no matching expression

I found this thread:

http://www.cycling74.com/forums/index.php?t=msg&goto=95748&rid=0&S=6b1c4a2cd0e2120ba1b2699206f22448

Which suggests this message involves:

1. Some object is sending information out an outlet in some thread
other than the scheduler or low priority threads.

2. Memory has been corrupted by some object.

I’ll post a patch right after this. I’m trying to cut out all of the extra objects. The patch will seem weird since I’ve hacked out most of the useful function.

The only 3rd party external is cambio~, by Matt Wright. It’s here:

http://cnmat.berkeley.edu/downloads

Is this a problem where cambio~ is sending its message in the audio thread?

To reproduce, open the patch and turn on audio. No errors. Open the gate to with the toggle. Errors.

Intel iMac; 10.4.11; Max 4.6.3

tx,

mz

#35495
Jan 23, 2008 at 10:25pm

The patch:

#P toggle 287 38 15 0;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 287 76 29 196617 gate;
#B color 5;
#P button 310 170 15 0;
#P button 401 321 15 0;
#P button 260 319 15 0;
#P newex 287 96 50 196617 print sub;
#B color 5;
#P newex 153 41 33 196617 r sub;
#B color 5;
#P message 89 43 40 196617 /reset;
#N vpatcher 715 44 1533 748;
#P origin 0 2;
#N comlet beat (concatenated int);
#P outlet 307 778 15 0;
#P window setfont “Sans Serif” 9.;
#P newex 307 756 104 196617 sprintf %d%.2d%.2d;
#P newex 171 417 47 196617 cambio~;
#P newex 201 245 48 196617 +~ 0.5;
#P number 411 164 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P number 357 163 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 171 464 27 196617 + 1;
#P newex 73 325 71 196617 selector~ 2 1;
#P newex 187 483 31 196617 == 3;
#P newex 171 389 43 196617 sah~ 0.;
#P newex 171 445 27 196617 i;
#P newex 228 696 27 196617 i 1;
#P newex 228 659 32 196617 sel 0;
#P newex 171 667 27 196617 t b i;
#P newex 171 727 67 196617 i 1;
#P newex 171 748 57 196617 pack 0 0 0;
#P message 502 102 80 196617 /beatgroups $1;
#P message 502 67 17 196617 1.;
#P newex 502 46 32 196617 sel 0;
#P newex 502 22 60 196617 loadmess 5;
#P newex 412 455 21 196617 t 1;
#P message 406 103 86 196617 /subdivisions $1;
#N counter 1 9999999;
#X flags 0 0;
#P newobj 340 658 98 196617 counter 1 9999999;
#P newex 340 633 32 196617 sel 2;
#P newex 340 609 27 196617 +;
#P newex 342 137 284 196617 OSC-route /subdivisions /beatgroups /internal /rate /reset;
#P newex 171 512 32 196617 sel 1;
#N counter 1 5;
#X flags 0 0;
#P newobj 192 578 66 196617 counter 1 5;
#P newex 171 534 31 196617 t 1 b;
#P newex 171 350 39 196617 >~ 0.5;
#P newex 171 325 71 196617 selector~ 2 1;
#P inlet 342 110 15 0;
#P newex 201 268 37 196617 %~ 1.;
#P message 406 68 17 196617 1.;
#P newex 406 47 32 196617 sel 0;
#P newex 406 23 60 196617 loadmess 3;
#P newex 201 215 35 196617 *~ 3.;
#P newex 201 185 58 196617 phasor~ 2.;
#N comlet beat (list);
#P outlet 171 781 15 0;
#P connect 2 0 31 1;
#P connect 8 0 9 0;
#P connect 31 0 29 0;
#P connect 29 0 36 0;
#P connect 36 0 28 0;
#P connect 28 0 32 0;
#P connect 32 0 12 0;
#P connect 12 0 10 0;
#P connect 10 0 25 0;
#P connect 12 1 25 0;
#P connect 25 0 24 0;
#P connect 24 0 23 0;
#P connect 23 0 0 0;
#P connect 32 0 30 0;
#P connect 10 1 11 0;
#P connect 11 0 23 1;
#P connect 1 0 2 0;
#P connect 2 0 35 0;
#P connect 35 0 6 0;
#P connect 6 0 8 1;
#P connect 9 0 29 1;
#P connect 13 0 30 1;
#P connect 25 1 23 2;
#P connect 18 0 11 2;
#P connect 13 0 2 1;
#P connect 11 2 26 0;
#P connect 26 0 27 0;
#P connect 18 0 24 1;
#P connect 27 0 24 1;
#P connect 18 0 27 1;
#P connect 16 0 27 1;
#P connect 13 1 11 4;
#P connect 23 0 37 0;
#P connect 37 0 38 0;
#P connect 30 0 14 0;
#P connect 14 0 15 0;
#P connect 15 0 16 0;
#P connect 22 0 13 0;
#P connect 17 0 13 0;
#P connect 7 0 13 0;
#P connect 13 0 33 0;
#P connect 11 2 14 1;
#P connect 3 0 4 0;
#P connect 4 0 5 0;
#P fasten 4 1 17 0 433 81;
#P connect 5 0 17 0;
#P connect 18 0 16 3;
#P connect 13 1 34 0;
#P connect 13 0 18 0;
#P fasten 13 4 18 0 563 292;
#P connect 13 1 18 0;
#P connect 19 0 20 0;
#P connect 20 0 21 0;
#P connect 21 0 22 0;
#P fasten 20 1 22 0 529 80;
#P pop;
#P newobj 89 64 52 196617 p subbeat;
#P bpatcher 89 366 125 117 -1 -23 eventnode.pat 6;
#N vpatcher 501 70 1024 445;
#P origin 0 -13;
#P setbglock 1;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 239 162 27 196617 +;
#P newex 270 143 27 196617 +;
#P newex 287 123 36 196617 == -1;
#P number 86 52 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname beatgroupcount[1];
#P newex 263 103 36 196617 == -1;
#P user led 107 83 17 17 2 150;
#P user led 4 83 17 17 2 150;
#P newex 288 307 53 196617 autopattr;
#X prestore beatgroupcount 1 0 3;
#X prestore beatgroupcount[1] 1 0 2;
#X prestore group-subdiv 1 0 1;
#X prestore to 1 0 sub;
#P objectname u068000083;
#P newex 289 326 140 196617 pattrstorage @autorestore 1;
#X client_rect 0 0 640 240;
#X storage_rect 0 0 640 240;
#P objectname u007000080;
#P newex 146 185 56 196617 route text;
#P newex 146 210 68 196617 prepend send;
#P outlet 459 308 15 0;
#P newex 4 214 62 196617 prepend set;
#P comment 6 71 88 196617 to:;
#P user textedit 23 68 105 86 32916 3 9 sub;
#P objectname to;
#P newex 144 293 47 196617 forward;
#P newex 239 74 36 196617 == -1;
#P button 266 223 15 0;
#P comment 34 87 88 196617 message:;
#P inlet 333 21 15 0;
#P message 239 243 114 196617 /reset;
#P newex 4 189 56 196617 route text;
#P number 86 38 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname group-subdiv;
#P comment 49 52 88 196617 subdiv:;
#P number 86 24 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname beatgroupcount;
#P user textedit 4 100 123 136 32896 3 9 /reset;
#P newex 239 196 32 196617 sel 3;
#P newex 239 48 58 196617 unpack i i i;
#P comment 5 24 88 196617 beat group count:;
#P comment 60 37 88 196617 beat:;
#P user panel -8 22 334 163;
#X brgb 233 238 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P background;
#P hidden connect 4 0 24 0;
#P hidden connect 5 0 9 0;
#P connect 9 0 18 0;
#P hidden connect 4 0 25 0;
#P connect 20 0 15 0;
#P connect 10 0 15 0;
#P hidden connect 16 0 21 0;
#P connect 21 0 20 0;
#P connect 11 0 3 0;
#P connect 3 0 14 0;
#P connect 14 0 30 0;
#P connect 30 0 4 0;
#P connect 4 0 10 0;
#P connect 18 0 10 0;
#P connect 29 0 30 1;
#P connect 3 1 26 0;
#P hidden connect 6 0 14 1;
#P connect 4 0 13 0;
#P connect 26 0 29 0;
#P connect 3 2 28 0;
#P connect 28 0 29 1;
#P hidden connect 8 0 26 1;
#P hidden connect 27 0 28 1;
#P connect 11 0 19 0;
#P pop;
#BP pop 0;
#P objectname eventnode.pat[2];
#P newex 395 283 49 196617 r event2;
#P newex 254 284 49 196617 r event1;
#P comment 353 100 84 196617 audio must be on;
#P user ezdac~ 367 63 411 96 0;
#P bpatcher 89 102 125 117 -1 -23 eventnode.pat 6;
#N vpatcher 501 70 1024 445;
#P origin 0 -13;
#P setbglock 1;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 239 162 27 196617 +;
#P newex 270 143 27 196617 +;
#P newex 287 123 36 196617 == -1;
#P number 86 52 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname beatgroupcount[1];
#P newex 263 103 36 196617 == -1;
#P user led 107 83 17 17 2 150;
#P user led 4 83 17 17 2 150;
#P newex 288 307 53 196617 autopattr;
#X prestore beatgroupcount 1 0 1;
#X prestore beatgroupcount[1] 1 0 3;
#X prestore group-subdiv 1 0 2;
#X prestore to 1 0 event1;
#P objectname u489000085;
#P newex 289 326 140 196617 pattrstorage @autorestore 1;
#X client_rect 0 0 640 240;
#X storage_rect 0 0 640 240;
#P objectname u330000081;
#P newex 146 185 56 196617 route text;
#P newex 146 210 68 196617 prepend send;
#P outlet 459 308 15 0;
#P newex 4 214 62 196617 prepend set;
#P comment 6 71 88 196617 to:;
#P user textedit 23 68 105 86 32916 3 9 event1;
#P objectname to;
#P newex 144 293 47 196617 forward;
#P newex 239 74 36 196617 == -1;
#P button 266 223 15 0;
#P comment 34 87 88 196617 message:;
#P inlet 333 21 15 0;
#P message 239 243 114 196617 /some/message here;
#P newex 4 189 56 196617 route text;
#P number 86 38 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname group-subdiv;
#P comment 49 52 88 196617 subdiv:;
#P number 86 24 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname beatgroupcount;
#P user textedit 4 100 123 136 32896 3 9 /some/message here;
#P newex 239 196 32 196617 sel 3;
#P newex 239 48 58 196617 unpack i i i;
#P comment 5 24 88 196617 beat group count:;
#P comment 60 37 88 196617 beat:;
#P user panel -8 22 334 163;
#X brgb 233 238 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P background;
#P hidden connect 4 0 24 0;
#P hidden connect 5 0 9 0;
#P connect 9 0 18 0;
#P hidden connect 4 0 25 0;
#P connect 20 0 15 0;
#P connect 10 0 15 0;
#P hidden connect 16 0 21 0;
#P connect 21 0 20 0;
#P connect 11 0 3 0;
#P connect 3 0 14 0;
#P connect 14 0 30 0;
#P connect 30 0 4 0;
#P connect 4 0 10 0;
#P connect 18 0 10 0;
#P connect 29 0 30 1;
#P connect 3 1 26 0;
#P hidden connect 6 0 14 1;
#P connect 4 0 13 0;
#P connect 26 0 29 0;
#P connect 3 2 28 0;
#P connect 28 0 29 1;
#P hidden connect 8 0 26 1;
#P hidden connect 27 0 28 1;
#P connect 11 0 19 0;
#P pop;
#BP pop 0;
#P objectname eventnode.pat;
#P bpatcher 89 229 125 117 -1 -23 eventnode.pat 6;
#N vpatcher 501 70 1024 445;
#P origin 0 -13;
#P setbglock 1;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 239 162 27 196617 +;
#P newex 270 143 27 196617 +;
#P newex 287 123 36 196617 == -1;
#P number 86 52 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname beatgroupcount[1];
#P newex 263 103 36 196617 == -1;
#P user led 107 83 17 17 2 150;
#P user led 4 83 17 17 2 150;
#P newex 288 307 53 196617 autopattr;
#X prestore beatgroupcount 1 0 2;
#X prestore beatgroupcount[1] 1 0 4;
#X prestore group-subdiv 1 0 3;
#X prestore to 1 0 event2;
#P objectname u643000087;
#P newex 289 326 140 196617 pattrstorage @autorestore 1;
#X client_rect 0 0 640 240;
#X storage_rect 0 0 640 240;
#P objectname u632000082;
#P newex 146 185 56 196617 route text;
#P newex 146 210 68 196617 prepend send;
#P outlet 459 308 15 0;
#P newex 4 214 62 196617 prepend set;
#P comment 6 71 88 196617 to:;
#P user textedit 23 68 105 86 32916 3 9 event2;
#P objectname to;
#P newex 144 293 47 196617 forward;
#P newex 239 74 36 196617 == -1;
#P button 266 223 15 0;
#P comment 34 87 88 196617 message:;
#P inlet 333 21 15 0;
#P message 239 243 114 196617 /another/message here;
#P newex 4 189 56 196617 route text;
#P number 86 38 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname group-subdiv;
#P comment 49 52 88 196617 subdiv:;
#P number 86 24 35 9 1 0 1 3 0 0 0 156 179 255 222 222 222 0 0 0;
#P objectname beatgroupcount;
#P user textedit 4 100 123 136 32896 3 9 /another/message here;
#P newex 239 196 32 196617 sel 3;
#P newex 239 48 58 196617 unpack i i i;
#P comment 5 24 88 196617 beat group count:;
#P comment 60 37 88 196617 beat:;
#P user panel -8 22 334 163;
#X brgb 233 238 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P background;
#P hidden connect 4 0 24 0;
#P hidden connect 5 0 9 0;
#P connect 9 0 18 0;
#P hidden connect 4 0 25 0;
#P connect 10 0 15 0;
#P connect 20 0 15 0;
#P hidden connect 16 0 21 0;
#P connect 21 0 20 0;
#P connect 11 0 3 0;
#P connect 3 0 14 0;
#P connect 14 0 30 0;
#P connect 30 0 4 0;
#P connect 4 0 10 0;
#P connect 18 0 10 0;
#P connect 29 0 30 1;
#P connect 3 1 26 0;
#P hidden connect 6 0 14 1;
#P connect 4 0 13 0;
#P connect 26 0 29 0;
#P connect 3 2 28 0;
#P connect 28 0 29 1;
#P hidden connect 8 0 26 1;
#P hidden connect 27 0 28 1;
#P connect 11 0 19 0;
#P pop;
#BP pop 0;
#P objectname eventnode.pat[1];
#P comment 312 39 227 196617 < -- open gate for printing and check failed error;
#P connect 6 0 13 0;
#P connect 10 0 8 0;
#P fasten 10 0 15 1 158 67 311 67;
#P connect 10 0 14 0;
#P connect 15 0 11 0;
#P connect 16 0 15 0;
#P connect 5 0 12 0;
#P connect 1 0 7 0;
#P connect 2 0 1 0;
#P connect 9 0 8 0;
#P connect 8 0 2 0;
#P window clipboard copycount 17;

#121067
Jan 23, 2008 at 11:16pm

FWIW, I don’t have cambio~ installed and I don’t get the “check failed” message.

– P.

#121068
Jan 24, 2008 at 1:48am

No error here, _with_ cambio~ installed

MacBook Pro, Max/MSP 4.6.3, OS X 10.4.11

#121069
Jan 24, 2008 at 1:59am

Quote: kjg wrote on Thu, 24 January 2008 02:48
—————————————————-
> No error here, _with_ cambio~ installed

excuse me, that was before I saw that the gate had to be opened for printing. With cambio~ installed, same error here

#121070
Jan 24, 2008 at 7:58am

mzed schrieb:
> The patch:

Works fine here on a PPC Powerbook.

Btw, do you know how to open an embedded bpatcher? Maybe in this case
its better to send the bpatcher seperately…

Anyway seems to need to be checked with Matt…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#121071
Jan 24, 2008 at 8:26pm

For everyone’s general interest, I put a “pipe 0″ after cambio~, and that seems to have fixed the problem. The purpose of the seemingly paradoxical pipe is to move the output of cambio~ to the scheduler, rather than the audio thread.

I’m off to try to learn to fix this in the code. Any suggestions would be helpful.

mz

#121072
Jan 25, 2008 at 9:05am

mzed schrieb:
> For everyone’s general interest, I put a “pipe 0″ after cambio~, and
> that seems to have fixed the problem. The purpose of the seemingly
> paradoxical pipe is to move the output of cambio~ to the scheduler,
> rather than the audio thread.

You’d better use deferlow for that purpose. In the past at least I had
problems with pipe and don’t trust it if it isn’t absolutely necessary.
Deferlow is made for exatly that purpose.
Its an object which fixes so many problems, that I don’t know how maxin’
was possible before it became a standard object… ;-)

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#121073
Jan 25, 2008 at 7:18pm

Quote: Stefan Tiedje wrote on Fri, 25 January 2008 01:05
—————————————————-
> mzed schrieb:
> > For everyone’s general interest, I put a “pipe 0″ after cambio~, and
> > that seems to have fixed the problem. The purpose of the seemingly
> > paradoxical pipe is to move the output of cambio~ to the scheduler,
> > rather than the audio thread.
>
> You’d better use deferlow for that purpose. In the past at least I had
> problems with pipe and don’t trust it if it isn’t absolutely necessary.
> Deferlow is made for exatly that purpose.
> Its an object which fixes so many problems, that I don’t know how maxin’
> was possible before it became a standard object… ;-)
>

That seems pretty extreme to me. Because accurate timing is important, I’m running this patch with overdrive on, scheduler in audio interrupt, and low (< = 64) signal vector sizes. pipe will dump my messages into the scheduler. Unless the scheduler is backlogging (and I wish I had a tool to see this), then that stack will be serviced every signal vector. deferlow will dump things to the back of the queue, which is serviced at a lower priority.

I should add that putting the scheduler in audio interrupt also eliminated my error with cambio~.

Maybe this belongs in the dev forum now; I’ll let the moderator decide. All of this problem is a result of calling output_float() in the perform method of an MSP object. Most of what I’ve found in the forum and in the manual says that this is a bad idea, and obviously I’ve run into problems. Matt Wright has described Ben Neville’s forum posts on this topic as “bullying”, which I think is harsh. But I agree that there needs to be a little more content beyond “you shouldn’t do that.” cambio~ limits itself to outputting 3 events per vector, and we have ample means to put those events in either the queue or the scheduler after the fact, so why not output them in the most timing-sensitive way possible? Moving from the signal thread to either event thread is pretty crummy for programmers. I’m somewhat reassured by throwing the scheduler in audio interrupt, but having to instantiate all these clocks to get events from signals is disconcerting at best.

Pardon my rant. I’m sure this is a known issue for cycling developers. I’m off to work in SuperCollider for a while.

mz

#121074
Jan 26, 2008 at 4:55pm

mzed schrieb:
> That seems pretty extreme to me. Because accurate timing is
> important, I’m running this patch with overdrive on, scheduler in
> audio interrupt, and low (< = 64) signal vector sizes. pipe will dump
> my messages into the scheduler. Unless the scheduler is backlogging
> (and I wish I had a tool to see this), then that stack will be
> serviced every signal vector. deferlow will dump things to the back
> of the queue, which is serviced at a lower priority.

I recall an explanation from JCK (the author of deferlow) who claimed
sending a bang through [delay 0] does exactly the same as sending it
through deferlow. I don’t know if this would be true for pipe as well…

Maybe some C74 gurus who know the sources can shed some light on it…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#121075

You must be logged in to reply to this topic.