Known Bugs in and near MPIglut (2007-03-28)


Bug: MPIglut programs don't really work right on non-DMX displays.
In particular, you can see the frontend and backend windows separately.
	-> Compile with plain GLUT, or bug Dr. Lawlor to fix this.

Bug: "Can't find header file "mpi.h"!"
	-> You need to compile MPIglut code with your MPI compiler, often mpiCC.

Bug: if you only set up the GL_PROJECTION matrix in your main() function,
MPIglut doesn't have a chance to update the projection matrix.
This means the MPIglut backend subwindows won't show up in the right places,
won't resize, or won't show up at all.
	-> You must call glLoad<something> for the GL_PROJECTION matrix in either your reshape or repaint functions.

Bug: if you exit(0) without MPI_Finalize, MPI freaks out ("possible EOF in socket:").
So MPIglut calls atexit(MPI_Finalize) to make dang sure MPI_Finalize gets called.  
But if the program calls MPI_Finalize itself, MPICH 1.2 *locks up* instead of exiting.
	-> Your code must not call MPI_Finalize.

Bug: "Unable to create direct context rendering for window".  This always shows up for 
the frontend window.  If it shows up several times, your DMX config file and MPI machines
file (/etc/mpich/machines.LINUX) may not list the machines in the same order, which 
hurts performance.
	-> DMX and MPI config files should list the same machines in the same order.

Bug: libmpiglut.a has the patched freeglut inside of it.  If the user's GL/glut.h
is incompatible with this freeglut, user code may not compile or link.
	-> Freeglut should be installed as the system GLUT.  Or just use -I and -L to point here.

Bug: object files that #include "GL/glut.h" won't use any MPIglut overrides.
	-> Every object file should #include "GL/mpiglut.h".  You could also copy mpiglut.h to glut.h.

Bug: sometimes an MPIglut process won't exit properly, resulting in copies of 
the code running on some of the cluster nodes, consuming 100% of the CPU time.
	-> I think this is an MPICH bug.  Upgrading to MPICH2 may help.
