Hello everyone. I'm having an odd issue that's got me stumped. My GAMBAS app opens several fluidsynth daemons listening on different ports and communicates with them over a socket. While they do all send and receive commands properly, when I issue the "quit" command to any of the fluidsynth daemons they don't actually terminate. They do respond with "Cheers!", which is what they say when they terminate, but the processes remain and they continue responding to commands. I have to use SHELL "pkill fluidsynth", which leaves the daemons unable to be restarted because they can't bind to their designated port/socket afterward for some reason.
At first I thought it was fluidsynth behaving badly, but I'm able to telnet to the fluidsynth daemon and issue the "quit" command successfully using the same shell command as GAMBAS. I'm starting fluidsynth with the following command: SHELL "fluidsynth --connect-jack-outputs --no-shell --verbose --server --audio-driver=jack --midi-channels=1 --portname=LiquidSynth01 -oshell.port=9800 -oaudio.jack.id=LiquidSynth01 -omidi.driver=alsa_seq -omidi.portname=LiquidSynth01 -omidi.alsa_seq.id=LiquidSynth01" My code to stop the fluidsynth daemons is: DIM i AS Integer ' Stop FluidSynth. FOR i = 1 TO 16 Send_To_FluidSynth("quit", i) SLEEP 0.125 NEXT PUBLIC SUB Send_To_FluidSynth(FluidString AS String, Daemon AS Integer) ' Send a command to FluidSynth DIM Timeout AS Single FluidString = FluidString & "\n" ' Add carriage return to command is executed. Socket = NEW Socket Socket.Connect("localhost", 9799 + Daemon) DO WHILE (Socket.Status <> 7) AND (Socket.Status > 0) WAIT 0.1 Timeout = Timeout + 0.1 IF Timeout >= 0.25 THEN EXIT LOOP Timeout = 0 IF Socket.Status = 7 THEN ' Socket is good, send command. WRITE #Socket, FluidString, Len(FluidString) PRINT "Sending command to FluidSynth daemon: " & FluidString END IF DO WHILE Lof(Socket) = 0 WAIT 0.1 Timeout = Timeout + 0.1 IF Timeout >= 0.25 THEN EXIT LOOP READ #Socket, FluidString, Lof(Socket) PRINT "FluidSynth daemon replies with: " & FluidString CLOSE #Socket END As you can see there are 16 fluidsynth daemons starting at port 9800 and going up to port 9815. The for/next loop just cycles through these 16 ports to terminate each process sequentially. I added the timeout stuff because if the code runs with no fluidsynth processes active/listening it just hangs there in the do/loop loops. Here's my debug/console output right after trying to quit the fluidsynth daemons, including anything they replied with: Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Sending command to FluidSynth daemon: quit FluidSynth daemon replies with: cheers! Terminated WARNING: Child process terminated by signal 15 cannot read server event (Success) cannot complete execution of the processing graph (Resource temporarily unavailable) zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server cannot complete execution of the processing graph (Success) cannot complete execution of the processing graph (Success) zombified - calling shutdown handler zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server zombified - calling shutdown handler fluidsynth: error: Help! Lost the connection to the JACK server Failure to resume: Invalid argument The messages about JACK are because JACK is terminated after I attempt to terminate the fluidsynth daemons. Of course if they actually terminated properly they'd have nothing to complain about. I have no idea what's up with the "zombified" messages. Any ideas anyone? Kevin Fishburne Eight Virtues www: e-mail: phone: http://sales.eightvirtues.com sa...@eightvirtues.com (770) 853-6271 ------------------------------------------------------------------------------ The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user