[PlanetCCRMA] Re: SuperCollider3 on FC4

Russell Johnston russell@sharpfour.net
Thu Jul 14 21:50:01 2005

This is a multi-part message in MIME format.
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

>> I just built current CVS and it is failing to boot for me on a true fc4
> Oh rats, so it's not an emulation problem.  I get the same result as you
> if I boot the local server, and I get "SCLang segmentation fault" if I
> boot the internal server.  I'll try a debug build, and I will let you
> (and I guess sc-dev) know if I can figure out what's going wrong.

Okay, I have got SC3 plugins loading sucessfully on FC4.  scsynth was
crashing when it tried to dlclose an invalid handle.  The handle was
invalid because of providing dlopen with the unsupported flag value
"RTLD_UNSHARED"; as far as I can tell this is an Apple-only flag(?)
Looks like dlopen was just ignoring the flag in previous versions,
but is now rejecting it.

With the attached patch, scsynth on my qemu FC4 test system gets to
"could not initialize audio" and gives up, but I believe (based on
the Jack error messages) that this time it really is due to the lack
of a soundcard on the emulated system.  So I guess I'm asking if
someone can try applying this patch to source/server/SC_Lib_Cintf.cpp
in the current CVS of SuperCollider3, and see if the resulting server
works on a properly soundcard-enabled system.  If it does, I'll post
the patch to sc-dev.

Please let me know if it is unhelpful for me to submit patches for
others to test.  I don't have a good place to install FC4 on a real
box right now, but maybe that makes me a poor candidate to work on
a port to that platform?  You won't hurt my feelings.  :)


Content-Type: text/plain;
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;

--- /home/johnston/downloads/SC_Lib_Cintf.cpp	2005-07-14 22:07:46.646314424 -0500
+++ /home/johnston/src/SuperCollider3/source/server/SC_Lib_Cintf.cpp	2005-07-14 22:10:10.883387056 -0500
@@ -130,11 +130,14 @@
+#ifdef SC_DARWIN
 	void* handle = dlopen(filename, RTLD_NOW | RTLD_UNSHARED);
+        void* handle = dlopen(filename, RTLD_NOW);
 	if (!handle) {
 		scprintf("*** ERROR: dlopen '%s' err '%s'\n", filename, dlerror());
-		dlclose(handle);
 		return false;