Using STDCALL, not the callee but the called procedure pops the arguments from the stack. The problem is that gfortran currently also for BIND(C) passes the string lengths as arguments.
See also: http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/19d77dfc75f8be58 -- Summary: Bind(C): Don't pass the string length as argument (for STDCALL) Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34079