If your computer's
/tmp is non-executable, you will run into problems with
For example, the temp directory on my laptop is mounted using this line in
tmpfs /tmp tmpfs size=1024M,noexec,nosuid,nodev 0 0
This configuration leads to two serious problems with CrashPlan.
CrashPlan client not starting up
The first one is that while the daemon is running, the client doesn't start up and doesn't print anything out to the console.
You have to look in
/usr/local/crashplan/log/ui_error.log to find the
following error message:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: Can't load library: /tmp/.cpswt/libswt-gtk-4234.so Can't load library: /tmp/.cpswt/libswt-gtk.so no swt-gtk-4234 in java.library.path no swt-gtk in java.library.path /tmp/.cpswt/libswt-gtk-4234.so: /tmp/.cpswt/libswt-gtk-4234.so: failed to map segment from shared object: Operation not permitted at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source) at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source) at org.eclipse.swt.internal.C.<clinit>(Unknown Source) at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source) at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source) at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source) at com.backup42.desktop.CPDesktop.<init>(CPDesktop.java:266) at com.backup42.desktop.CPDesktop.main(CPDesktop.java:200)
To fix this, you must tell the client to use a different directory, one that
is executable and writable by users who need to use the GUI, by adding
something like this to the
GUI_JAVA_OPTS variable of
Backup waiting forever
The second problem is that once you're able to start the client, backups are
stuck at "waiting for backup"
and you can see the following in
Exception in thread "W87903837_ScanWrkr" java.lang.NoClassDefFoundError: Could not initialize class com.code42.jna.inotify.InotifyManager at com.code42.jna.inotify.JNAInotifyFileWatcherDriver.<init>(JNAInotifyFileWatcherDriver.java:21) at com.code42.backup.path.BackupSetsManager.initFileWatcherDriver(BackupSetsManager.java:393) at com.code42.backup.path.BackupSetsManager.startScheduledFileQueue(BackupSetsManager.java:331) at com.code42.backup.path.BackupSetsManager.access$1600(BackupSetsManager.java:66) at com.code42.backup.path.BackupSetsManager$ScanWorker.delay(BackupSetsManager.java:1073) at com.code42.utils.AWorker.run(AWorker.java:158) at java.lang.Thread.run(Thread.java:744)
This time, you must tell the server to use a different directory, one that
is executable and writable by the CrashPlan engine user (
root on my
machine), by adding something like this to the
SRV_JAVA_OPTS variable of
Finally, it seems like you need to restart the machine before this starts working. I'm not sure why restarting crashplan isn't enough.