void __cdecl foo(unsigned __int32 a,
unsigned __int32 b,
unsigned __int32 c,
unsigned __int32 d,
unsigned __int32 e,
unsigned __int32 f,
unsigned __int32 g);
struct myStruct
{
unsigned __int32 a;
unsigned __int32 b;
unsigned __int32 c;
unsigned __int32 d;
unsigned __int32 e;
unsigned __int32 f;
unsigned __int32 g;
}
void __cdecl bar(myStruct s);
void __cdecl errorPassingParameter(myStruct s1,
myStruct s2,
unsigned __int32 x);
Calling foo and bar from python completed successfully, calling errorParsingParameter resulted in stack corruption. It seems that python passed an extra pointer in the stack for s2.