Running Softimage on other distros like Ubuntu, Kubuntu, Pardus, and Gentoo

Here’s a workaround for running Softimage on other distros like Ubuntu, Kubuntu, Pardus, and Gentoo.
On these distros, some users have noticed problems with images (cannot browse for images, or even create noicon clips). Or Softimage can create and even save scenes, but crashes when you open a scene.

One of the Softimage developers believes he may have tracked down the source of this problem. The Softimage library has a dependency on libtiff and libjpeg. If either of these is missing, then the Softimage library fails to register correctly (during the install), but unfortunately no error is reported.

As a workaround you can try the following steps:

  1. Open your Softimage shell and source the .xsi file
  2. cd to the “Application\bin” folder
  3. Run cmdreg
  4. If you get an error, then you have this problem, so we can try to fix it. Now run ldd
  5. You should see that 1 (or more) libraries are missing – most likely libtiff and/or libjpeg.
  6. Install the required package(s) to get the missing libraries and then run the cmdreg again: cmdreg
  7. It should register now and all the problems with image nodes will be gone.
  8. If you have other strange problem you can ensure that all the Softimage libraries are registered correctly, by re-registering them all by running cmdreg -f XSICOMDLLs.lst
  9. If you have any errors, run the steps above checking the failing library with ldd to see which libraries are missing.

Hat tip: Sean Donnelly

The case of the slow 2011 startup on Fedora 14

In a recent case, a customer reported that Softimage 2011 took forever (four to five minutes) to start on Fedora 14. Softimage 2010 SP1, on the other hand, started up just fine.

It turns out that for Softimage 2011, 2011SP1, and 2011SAP on Fedora 14, you need to put back our x11 patch (this patch was needed for Fedora 8, 9, and 10; Fedora 11, 12, and 13 run with a different compiled version of XCB and don’t need the patch).

Edit the .mwenv file ($XSI_HOME/Application/mainwin/mw/scripts/.mwenv) and change this

if ( "fc8" == "$fcver" || "fc9" == "$fcver" || "fc10" == "$fcver" ) set x11patch="$MWHOME/lib-${MWCONFIG_NAME}_optimized/X11"

to this:

if ( "fc8" == "$fcver" || "fc9" == "$fcver" || "fc10" == "$fcver" || "fc14" == "$fcver" ) set x11patch="$MWHOME/lib-${MWCONFIG_NAME}_optimized/X11"

Then source the .xsi and restart Softimage.

About the x11 patch:

In a previous version of Softimage, we introduced a libX11 workaround because of a problem introduced in FC8 with XCB that can cause freezes during Multi-threaded user interaction. What we did was to place a libX11 binary (compiled _without_ xcb) into a patch directory and then add that directory to the LD_LIBRARY_PATH.

The XCB problem was fixed in FC11, so we modified Softimage. The libX11 binary is still installed with the Linux setup, but the .mwenv script checks the Fedora version you are running and only adds the libX11 patch path to the LD_LIBRARY_PATH for Fedora 8, 9, and 10. So on Fedora 11, 12, and 13 Softimage uses the system installed libX11.

UPDATE: Another symptom of this problem is “EAGAIN (Resource temporarily unavailable)” errors for the tmp/.X11-unix/X0 socket. You’ll see these in the strace log:

connect(19, {sa_family=AF_FILE, path=@"/tmp/.X11-unix/X0"}, 20) = 0
getpeername(19, {sa_family=AF_FILE, path=@"/tmp/.X11-unix/X0"}, [20]) = 0
uname({sys="Linux", node="homer", ...}) = 0
access("/var/run/gdm/auth-for-xxx-Q2I4go/database", R_OK) = 0
open("/var/run/gdm/auth-for-xxx-Q2I4go/database", O_RDONLY) = 20
fstat(20, {st_mode=S_IFREG|0600, st_size=50, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3360deb000
read(20, "\1\0\0\5homer\0\0010\0\22MIT-MAGIC-COOKIE-1"..., 4096) = 50
close(20)                               = 0     
munmap(0x7f3360deb000, 4096)            = 0
getsockname(19, {sa_family=AF_FILE, NULL}, [2]) = 0
fcntl(19, F_GETFL)                      = 0x2 (flags O_RDWR)
fcntl(19, F_SETFL, O_RDWR|O_NONBLOCK)   = 0
fcntl(19, F_SETFD, FD_CLOEXEC)          = 0
poll([{fd=19, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=19, revents=POLLOUT}])
writev(19, [{"l\0\v\0\0\0\22\0\20\0\0\0", 12}, {"", 0}, {"MIT-MAGIC-COOKIE-1", 18}, {"\0\0", 2}, {"\367\371\200\336\321\\\37\4\22\0324\274\3356|\313", 16}, {"", 0}], 6) = 48
read(19, 0x27ae690, 8)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=19, events=POLLIN}], 1, -1)   = 1 ([{fd=19, revents=POLLIN}])