Bugs item #3298383, was opened at 2011-05-06 14:13 Message generated for change (Tracker Item Submitted) made by radarsat1 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=478070&aid=3298383...
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: puredata Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Stephen Sinclair (radarsat1) Assigned to: Nobody/Anonymous (nobody) Summary: PureData writing beyond t_object struct on Windows.
Initial Comment: This very simple external provides a responder to a single message, "test". The object's data structure extends t_object by a single integer, "pad". I set "pad" to zero immediately after pd_new(). Later, when it receives "test", it prints "pad" again. On Linux, the log contains the following:
hello_new, x->pad: 0 hello_test, x->pad: 0
However, on Windows, the log contains this:
hello_new, x->pad: 0 hello_test, x->pad: 0x1
This means somewhere between initializing my object and receiving "test", the t_object structure is written to beyond its length.
This was noticed because in a real object I had a pointer in that location, which was invalidated by this effect, and dereferencing it caused PureData to crash. My temporary solution is to put a padding int there, but it would be nice to find the problem. I haven't yet managed to compile Pd from scratch for Windows yet, so I can't debug it until I get that working, but I thought I should report it in case anyone knows more.
----------------------------------------------------------------------
You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=478070&aid=3298383...