What are xmame and xmess?

Xmame and xmess are ports of MAME, the Multiple Arcade Machine Emulator and MESS, the Multi Emulator Super System. They run primarily on Linux and various flavors of UNIX, although some other operating systems, such as BeOS, are supported to some degree.

Where's the documentation?

The documentation is included with the source code, but it's in a bit of a sorry state due to neglect. Better documentation should be appearing on this site and included with the code in the future.

The program crashes with a segmentation fault or bus error. What can I do?

It's possible that you've encountered a problem with GCC. One thing you can try doing is reducing the optimization; for example, use -O2 instead of -O3. You could also try -O0 and disabling -f options to turn off optimization entirely.

If you have a different (older) release of GCC available, it may be worth your time to build with it.

If reducing the optimization or switching to another version of GCC fixes the problem, it doesn't necessarily mean that a bug in GCC is to blame. It could be an xmame or xmess bug that only occurs under certain conditions.

Either way, the best thing to do is to report the problem to the mailing list, and include as many of the following pieces of information as possible:

  • The version of xmame that you're running.
  • The command line that you used when the crash occurred.
  • The output produced by xmame.
  • The version of GCC that you used to build (gcc -v).
  • A copy of the makefile that you used to build.

If you'd like to go a step further (you might be asked to do this if no one else can reproduce the crash), you can provide a backtrace using GDB:

  1. Make a copy of your makefile, say, makefile.unix.debug.
  2. Edit the new makefile so that the following variables are set:

    CFLAGS += -O0
    CFLAGS += -ggdb
    LD = $(CC) -Wl,-warn-common


    If the crash only happens when the optimization is higher than -O0, don't bother with the first setting. Also, -fomit-frame-pointer should not be set.

  3. Build xmame using the debug makefile:

    make -f ./makefile.unix.debug

  4. Load the application in GDB:

    gdb ./xmame.x11

  5. When the (gdb) prompt appears, type r followed by your command line. For example:

    r -rp /usr/local/share/xmame/roms robby

  6. When the crash occurs, GDB will produce some output and display the (gdb) prompt. Generate a backtrace by using the bt command.
  7. Copy and paste all of the output from GDB into your email.

Where are the rest of the questions?

They're coming. The site reorganization is only in its early stages. :-)