Hi! >> to trigger the bug. >> >> Is this a gcc bug? > > Maybe, maybe not. > > Do you get any compiler warnings, with full warnings enabled? -Wall doesn't show anything, only -pendantic reports some standard-related issues. > > What is the code that faults? The fault occurs at the last few steps in the long parser_parse function. At least in the original version of the parser, the problem was that the return address was wrong (or it was taken from the wrong position in memory). The disasemble command of gdb showed me this as code before the Bus error occured: 0x2b592864 <parser_parse+153848>: lw t9,8044(sp) 0x2b592868 <parser_parse+153852>: move at,at 0x2b59286c <parser_parse+153856>: lw v0,-4(t9) 0x2b592870 <parser_parse+153860>: lw at,-32732(gp) 0x2b592874 <parser_parse+153864>: move at,at 0x2b592878 <parser_parse+153868>: addiu at,at,19484 0x2b59287c <parser_parse+153872>: jr at 0x2b592880 <parser_parse+153876>: move at,at After the addiu, the at register contained the address 0x2ad42940 (which is in a segment that is not marked as executable) that then caused the bus error. The strange thing is that my removal of code does not change the execution path, except that it doesn't need to check in certain cases whether self->verbose is true (which is always false in my test case) and it of course reduces the number of string constants. Willi