Also look at the TODO file external tools and drivers we use: gcc 2.95 Can't do our assembler inline due to statemens beeing to long, and having to many arguments. gcc 2.96 (redhat smashed together 2.95 + 3.0 patchset) Nope.. can't do assembler good enough.. fails to compile gcc 3.3.3: When using -O2 or higher it used to crash cpiface/cpiphase.c. So we waste 256*4 more bytes of stack there, just when we are compiler with you 3.3.3 :-) Update.. We always waste more memory now. The problem source is aliasing. gcc 4.x: If other libraries are compiled with 4.x and ocp with 3.x you might get some random crashes in c++ code due to internal ABI changes in g++. make 3.79.1: Has some serious faults.. Sometimes it failes to locate files, forget flags and shit like that. glibc 2.3 and the linuxthread library is not compatible with Eletric Fence when timer is used. define NO_BACKGROUND_MIXER if you intend to use efence ncurses-5.2-26: (on redhat 7.3 for instance) Has some drawing bugs when drawing spaces, it sometimes failes to detect overwritten data.. Couses sometimes unwanted text on places you wanted it to change to blank. (See fixbadgraphic in ocp.ini and stuff/poutput-curses.c) (Of course curses will mess up if you don't redirect stderr currently, but this bug makes even more noise on the console, and it still has bugs when making very big terminals) Sometimes keycodes like esc[H becomes escOH .. Workaround is always compiled in nforce audio, binary drivers from nvidia: Returns negative ODELAY, bugfix always active. via82cxxx_audio/kernel 2.4.25-rc1: sometimes give ODELAY bigger than what you have actually written. Workarounds are always compiled in (devposs) 2.4.26-rc1: some devices that is not present like /dev/sg0 makes funny results in the following cases: /dev/sg0 is not present. /dev/sga is a symlink to /dev/sg0. (stat("/dev/sga", &st)) then failes with ENOENT, while stat("/dev/sg0", &st) works perfect and lstat("/dev/sga") tridentfb/kernel 2.4.26-rc: (and possible other versions) tridentfb has some funny bugs. The default palette you read from the driver is not the real one since the bits are shifted wrong. tridentfb reports linelength wrong after you have changed resolution. Reopen the framebuffer is not enough. You need a new process-space to update the values. XFree86-4.3.0: (matrox driver atleast) * Keyboard state is as broken as it can be, so there is an option in ocp.ini to trace shiftmask by hand, and not trust XEvent * It leaves a /dev/mem filedescriptor open across exec calls And from this software: MINOR FUCKUPS: playxm/* has some bugs on some few files (samples broken): adamski.mod: monty pole almost.mod: almost and these have buggy global commands barbarian.mod: bar-barian (we have disables tempo=0 as "end" command for now) long pauses causes idiv to give segfault due to overflow (#PE) when unpaused. Needs a range check when I bother to make it.