seems to be that in src/output-jack.c:output_new_jack() we call
jack_client_open on our output_jack *a and then bail if it fails in goto out;
this then calls jack_ringbuffer_free on a->ringbuf if its not null, but ringbuf
isnt null, if we force a->ringbuf=NULL (as it indeed is) on the new 'a' object
before attempting jack_client_open then we can gaurantee it wont be accidently
jack_ringbuffer_free's before we've jack_ringbuffer_create'd it
diff -ruN potamus-0.10/src/output-jack.c potamus-0.10.new/src/output-jack.c
--- potamus-0.10/src/output-jack.c 2008-06-12 18:36:14.000000000 +0100
+++ potamus-0.10.new/src/output-jack.c 2010-02-12 11:45:46.000000000 +0000
@@ -142,6 +142,7 @@
o->release = oj_release;
o->close = oj_close;
+ a->ringbuf=NULL;
a->client = jack_client_open("potamus", JackNoStartServer, NULL);
if (a->client == NULL)
goto out;