I'll attach a short sample file that works nicely on 32 bit architectures but breaks on AMD64. A function taking varargs calls va_start and passes that va_list object to another function. This one will output it twice with vprintf. Between the two calls to vprintf there's another function call. The second call to vprint produces wrong output, e.g.
::mxmsg(1) string honk int 42 string cow! ::mxmsg(2) string int 1697834872 string The same code produces correct output on 32bit platforms. -- Summary: va_list passed to a function gets messed up by a call to another function Product: gcc Version: 3.4.2 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: moritz at bunkus dot org CC: gcc-bugs at gcc dot gnu dot org GCC host triplet: x86_64-redhat-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20916