Galaxy Communicator Documentation:

Frequently Asked Questions

License / Documentation home / Help and feedback

We intend to expand this FAQ considerably, as people start asking us more questions :-). The questions below are a rough beginning.


"When I type 'make', it fails with an error like 'Unexpected end of line seen'.

Be sure you're using GNU make. Try "make -v" to confirm that it's GNU make. GNU make will print out the version; other makes will probably not even recognize the -v flag.

"I'm trying to build a server in my own directory, using the MIT Makefile template, but make can't find the paths."

In order to compile a server outside the MIT directory stack, be sure you do the following in your Makefile, at the top:

# Modify this to point to the package root directory

ROOT_DIR = <root of Communicator>

# Need these to provide something useful for MIT rules.make.

TEMPLATES = $(ROOT_DIR)/templates

This will establish the appropriate context for the compilation.

"I want to use the Python/Java/Allegro servers, but when I compile the contrib/MITRE/ subdirectory, the Python/Java/Allegro servers aren't created."

Check templates/<arch>-<os>/config.make to see if the appropriate language binding variables are uncommented and correct. Consult the installation instructions for details.

Server and Hub setup

"My server won't start up on the port I request."

The servers are configured to search for the first available port. Most likely, the port you requested is already in use. If you want to force the server to start up on the request port or fail, use -assert as an argument to the server.

"I've started up my server, but the Hub can't find it."

Make sure the Hub is looking for the server on the appropriate port, and that the server started up on the same port.

"I want to read some of the Hub output in the process monitor, but my Hub window keeps scrolling back to the bottom."

MITRE provides a process monitor to aid in controlling processes. Each pane of the process monitor has a "Pause" button which pauses the output. Normally, the Hub prints out a pacifier character every second when it's not receiving messages. So in order to review the Hub output you must press the "Pause" button, or restart the Hub with the -suppress_pacifier command line directive.


"I saved away an environment object in a dispatch function for later use, but when I tried to write a frame to the Hub with it later, my application seg faulted."

Environment objects which are passed to dispatch functions are freed when the dispatch function exits. In order to use one later, you need to copy it or increment its reference count. See the advanced topic on saving away an environment.


"I've set up a callback for my incoming broker to do something when it's done, but it's never doing anything."

First, make sure that your outgoing broker or proxy is calling GalIO_BrokerDataOutDone or GalSS_ProxyDone, as appropriate. If it doesn't, the incoming broker will never run the appropriate callbacks. Second, if you're using brokers instead of proxies on the incoming side, make sure you call GalIO_SetBrokerActive on the incoming broker. If you don't, the broker will never read from its connection.

MIT Hub scripting

"I wanted my program to loop forever, so I made a single rule with identical IN: and OUT: variable lists, but it exits after a single iteration."

There is no looping construct in the Hub scripting language. Execution resumes at the point where the message returns. Your program terminated because there were no following rules. If you want to simulate an infinite loop, you must do it by tail recursion: introduce a new message for each "iteration". See the double server example.

"Rules that shouldn't be firing are firing when the Hub starts up."

There's probably something in your initial token which is causing the rules to fire. Customize either the rules or the initial token to rule out the offending condition.

License / Documentation home / Help and feedback
Last updated July 26, 2002