FAQThe FAQ is organised into sections. Some sections are more like Frequently Encountered Issues (FEI), but we list them all on this page so it's easy to search for a solution to your problem.
What does E_XXX mean?
This section covers installation problems that prevent you from running the test suite. If
On some *nix systems, using a tilde "~" in
Why do I get
Unfortunately, there seem to be a lot of ways that the Matlab Engine can be imperfectly installed. As far as we know these are not problems with BRAHMS - please let us know if you know otherwise.
The Matlab Engine will not start on Linux (also OSX?) unless you have
On Linux, and the like, the Matlab Engine will not start unless it is on the machine path. You may see a message, something like "matlab is not on the path". Fix this by editing your .bashrc to add the line
On Windows, the Matlab Engine may fail to start if it is not "registered as a COM server" (documented here). To ensure that it is, run
If you are using Matlab version R14SP3 or earlier on Linux, the Matlab Engine may not start because the bindings are built for R2007a and later. Either upgrade your version of Matlab, or build the Matlab bindings yourself against your version of Matlab (you can obtain the BRAHMS source code from SourceForge).
If you get a message like either of these
GCC_x.x not found GLIBCXX_x.x.x not foundyou are very likely suffering from GregBug, which is not BRAHMS-related (though only we call it GregBug, afaik). Matlab may try to load the libraries supplied with it, rather than those installed on your system. The fix is to hide Matlab's supplied libraries (you may need root privileges). See GregBug for details of how to do this.
If you get the above messages, and the fix at GregBug doesn't solve it, you may be suffering from double-jeopardy GregBug. Matlab secretly changes LD_LIBRARY_PATH on startup to point to the MATLAB version of GLIBC++, so that GLIBC++ 3.4.9 can no longer be found, even if you have applied the GregBug fix. The solution is to modify
If you get an abort, you may be suffering from the run-time version of GregBug (this is when the wrong libraries link and load, but then fail when calls are made into them). Try applying the fix detailed at GregBug, and please let us know if it fixes it.
Under Linux, you may see aborts where you expect to see error messages (try running
If you see the message
I18N Runtime Error: Invalid return value for stat detected while processing $(MATLAB)/bin/$(ARCH).you may be encountering an issue we have seen before on Linux machines. The matlab engine will generally not start if Matlab is not on the path (see above), but it may try and start and fail (with this message) if you happen to be in the Matlab bin directory when you launch it. The solution is (a) to move out of the Matlab bin directory, and (b) make sure the Matlab bin directory is on your machine path (see above). This condition may also generate an abort.
If your system runs fine through Matlab, but fails to start the Matlab Engine if run from the shell, or
error while loading shared libraries: libeng.soEither run your system through Matlab (bit rubbish), or set your loader path to include the path to the Matlab library folder. Edit your
The first MPI test has failed - if you don't have, or don't intend to use, MPI for inter-process communications (you would know if you were going to use it), then you can ignore this. Otherwise, you have a problem with your MPI installation, or a problem with how BRAHMS is trying to use it.
In Matlab (using 995)
Why does <insert crap browser> open my blue links from the Matlab console?
See the Execution Parameter OpenURL.
Why do I get "File does not exist" in BRAHMS Manager, when selecting a directory?
There is a bug> in the Linux version of Matlab R14SP2, which will manifest in this way. Upgrading to SP3, or a later Matlab release, will resolve the problem. If that route is not available, other workarounds are detailed on this page. Failing that, you can control your environment without using the BRAHMS Manager. See the documentation for Execution Parameters, or type
Scary Warning MessagesThis section lists warning messages you may see that do not affect behaviour. Some answers include suggestions for how to fix them.
What does "Cannot convert string ... to type FontStruct" mean?
This is because NX uses two font servers, one local and one remote, and the local one is not in sync with the remote one. It causes no harm, other than the BRAHMS GUI will not appear quite as intended (the default system font will be used). If you want to fix the problem, we think the easiest solution is to copy the remote font directory over to your local machine (see this). Alternatively, set ShowGUI to false (e.g. at the command-line using
What does "I18N Runtime Warning ..." mean?
Harmless, but details of how to hide this warning are here.
What does "Warning: Handle array initialization failed. ..." mean?
This warning is probably harmless, though it seems intutive given the text that it may cause trouble if you are trying to use matlab handle graphics (TM). However, I have never yet seen these warnings when running a system, only when walking the namespace (where you get engOpen() calls closely following engClose() calls), so it probably won't come up. The closed conversation with MathWorks is here.
What does "Locking assertion failure.... Backtrace..." mean?
This is not BRAHMS-related, and is reported, commonly, on Ubuntu with R2007a, but may occur elsewhere. Seems to be harmless, but see this for the fix. Summary is: ensure package
export MATLAB_JAVA=/usr/lib/jvm/java-6-sun/jre(though check the path to the JRE for your system).
What does "GCC_x.x not found" or "GLIBCXX_x.x.x not found" mean?
This is not a harmless warning; search this page for "GregBug".
I'm getting an abort - is it my Process, or BRAHMS? When is it happening?
The Structured Log is invaluable for debugging parallel computing problems, but it is less useful for debugging aborts, since it is left unfinished and is not valid XML, so can only be read in a text editor. To generate a full text-only log, run your system from the shell with option
It is also strongly recommended that you run with the option
If you get an abort whilst loading a module (i.e. immediately after a message like "loading module M"), you may be seeing a stack overflow, due to very large static variables being placed on the stack. Since it's happening at load-time, these are likely to be global variables in your module. Use the heap for these variables, instead.
If you get an abort following
Attach a debugger. See this page.
What does it mean that my abort goes away when I turn on full logging (--dd)?
Probably that it is a thread-safety bug, and that full logging slows things down just enough to prevent it from manifesting. Are you using threads, explicitly or implicitly? Or process-shared memory? Are there global variables in your module that are accessed by all instances of your Component? Are you using Operating System services, particularly GUI services? If so, your problem probably lies in thread-safety. If not, you may have found a bug in BRAHMS - please try and make sure before reporting it.
The process I've written works fine in my test system - why does it abort when connected in some other system?
EVENT_INIT_CONNECT is fired on processes multiple times in general, with more inputs available on each subsequent call. In a simple system, your Process may receive only one EVENT_CONNECT call, with all its inputs available. Once connected in a larger system, it may receive EVENT_INIT_CONNECT with some inputs not available. If you have made an incautious assumption that a Data object is non-NULL, this may be when you find out (this is an easy mistake to make). Correct the logic in your EVENT_INIT_CONNECT implementation, and make sure Data is Due before you use it. See F_NEEDS_ALL_INPUTS, F_FIRST_CALL and F_LAST_CALL.
The process I've written work fine in Solo - why does it abort when I start using Concerto?
See the above answer - when you switch to Concerto, your system may be initialised in a completely different order.
Matlab Development (1258)
How do I debug a Matlab process?
You can't. I'm not sure if you're allowed to debug within the Matlab engine at all - certainly, if you use a
Warning: Keyboard command not available when using MATLAB as EngineIf you try to set a debug point in an engine you've left open, then you get a hang (Win32, Matlab R14SP3, BRAHMS Beta1 RC7) that can only be broken the hard way. I'm not sure if you get debugging capability at all in the Engine. If you have more information, and certainly if you have any debugging success, let us know.
Why does my system not run faster on a machine with multiple cores/processors?
If you turn off multi-threading (set
If all of your processes are authored in a non-thread-safe language (such as Matlab or Python), they cannot be run in parallel. If future releases of these engines are thread-safe, BRAHMS will be updated to take advantage. In the meantime, you can still get a speed-up by using Concerto.
Possible Future Issues
Why does BRAHMS abort when more than one copy is running on my machine?
If using processes that set F_NO_CONCURRENCY (for instance, any authored in Matlab), we may run into problems if they are called concurrently in different //voices// as well as if they are called concurrently in different threads. For example, if a bunch of people are using BRAHMS on the same machine, perhaps on different processors, executing entirely unrelated jobs but through the same Matlab engine (or Matlab engine libraries), this could cause random seg faults or data corruption. If you think you are seeing problems of this sort, please get in touch and help us to identify and solve them.
|For details of licensing and distribution, please click here.|