[Mono-list] jack-cil: dealing with a mono runtime crash and some threading issues.

Jorge García jgarcia@ac.upc.es
Tue, 02 Nov 2004 20:35:35 +0100


Hi 

I have been some time trying to get working a binding of JACK (JACK
Audio Connection Kit) to c-sharp, but I can't realize why it makes mono
crash:

** ERROR **: file mini.c: line 6558 (mono_get_lmf_addr): should not be
reached
aborting...

I'm using Debian unstable Mono 1.0.2-1 packages (with 1.0.1 the same
example it gave a segmentation fault). 

Below I explain how jack-cil (not) works and when the error arrives. I'd
appreciate a lot any help to get this working (it would be very fun to
program sound apps with Mono).

Jack-cil code (with autotools and Monodoc support) can be found here,

http://vgafib.upc.es/~jorge/download/


Jorge




The JACK system consists in a local server (jackd) who manages de audio
interfaces and who coordinates the dataflow between clients. 


To do the simplest JACK aplication we must take these steps:
1) Create a client to register with the server

   client = new Jack.Client("clientname");
                                                                                             
2) Register a callback function, which will be called at the right time
by the server 

   client.Process += new System.EventHandler(OnProcess);
                                                                                                    
3) Tell the server that the app is read to start processing data

	client.Activate();



My binding consists in a gobject based glue lib called libgjack, that is
translated to c-sharp with gtk-sharp tools. libgjack examples work ok,
but when using the mono runtime I get next error when the jack server
calls the callback (and not when the own lib calls it):


jorge@rumba$ mono Client.exe
Simple jack-cil test
Executo gjack_client_new
Executo OnProcess!!!! <--- Signal emited directly by gjack  
Name prova
S'ha activat correctament
Entro a process 
	            <----- Process signal emited by jackd call
 
** ERROR **: file mini.c: line 6558 (mono_get_lmf_addr): should not be
reached
aborting...
Avortat



You can try jack-cil with:

1) Download from http://vgafib.upc.es/~jorge/download/

2) ./configure --prefix=/your_mono_prefix_path

3) make install

4) Test ligjack (it works ok)
	cd tests/libgjack
	make
	jackd -d alsa &
	tests/libgjack/test-client

5) Test with jack-cil (mono error)
	cd tests
	make
	jackd -d alsa &
	mono tests/Client.exe