Hi Xiaolin,
I'm not on the tracecompass team, but I do have a successful build of the incubator trace server running on my Linux system. The only information we have from your failure is the exit code (3). Looking at the startup code for trace-server, there is an ExitCode class in Application.java that indicates that exit code 3 may be caused by the workspace location already being in use (i.e. maybe there is another tracecompass-server process running. It might be a long lost zombie process on your system. Or it might be a .lock file in the workspace folder that was not properly removed when a trace-server process was shut down.
I can replicate your error by starting one trace-server process (successfully), then starting a second instance of trace-server. When I do this I get exactly the error you are seeing. So if you can find a nold trace-server process, try killing it. If not, then you need to know where the workspace root is (see the getWorkspaceRoot() method below). By default it will be a folder called ".tracecompass-webapp" your home folder, Check the .metadata folder within that folder for a ".lock" file. If you find one just manually delete it and try starting trace trace-server again.
Default workspace folder lock file: ~/.tracecompass-webapp/.metadata/.lock
It looks like you can also specify a different workspace folder by defining the TRACING_SERVER_ROOT environment variable to point to a different location. You could try that also. Try starting trace-server like this:
TRACING_SERVER_ROOT=~/.tracecompass-webapp-other ./trace-server
Hope this helps you get going again.
-Kevin
private enum ExitCode {
OK(""), //$NON-NLS-1$
ERROR_NO_WORKSPACE_ROOT("Trace server error: Workspace root doesn't exist."), //$NON-NLS-1$
ERROR_WORKSPACE_ROOT_PERMISSION("Trace server error: Workspace not writable."), //$NON-NLS-1$
ERROR_WORKSPACE_ALREADY_IN_USE("Trace server error: Workspace already in use."), //$NON-NLS-1$
ERROR_RUNNING_TRACE_SERVER("Trace server error: Error running trace server."); //$NON-NLS-1$
@NonNull private String fErrorText;
private ExitCode(@NonNull String errorText) {
fErrorText = errorText;
}
@NonNull public String getErrorText() {
return fErrorText;
}
}
private static String getWorkspaceRoot() {
/* Look for the environment variable in the global environment variables */
String workspaceRoot = System.getenv().get("TRACING_SERVER_ROOT"); //$NON-NLS-1$
if (workspaceRoot == null) {
/* Use the user's home directory */
workspaceRoot = System.getProperty("user.home"); //$NON-NLS-1$
}
return workspaceRoot;
}