Hello,

I have compiled an external which crashes Revolution with one particular set of parameters (sometimes only after the second or third try). The result usually looks like

EXC_BAD_ACCESS (0x0001)
KERN_INVALID_ADDRESS (0x0001) at 0x77777736

Thread 0 Crashed:
0    szone_malloc + 4048
1    malloc + 632
2    0x1000 + 1716868
3    0x1000 + 1716788
4    0x1000 + 1095296
5    0x1000 + 53916
6    0x1000 + 1063632
7    0x1000 + 929736
8    0x1000 + 794376
9    0x1000 + 804988

I tried to look at this in the debugger, but the function itself (extracting lines out of a text) always reaches the end without problems, the crash happens when the function returns to Revolution. (Dreamcard 2.7.2 and Revolution 2.8.0-dp-2 tested). After the crash I have to tell Revolution twice to quit immediately (in the dock) before it finally stops.

The only problem I could make out is that I use the original data handle to return the results. I used this on HyperCard externals with no problem (that I am aware of), but is this somehow disallowed in Revolution? For large amounts of data it seems economical to use the existing pointer to write the return values to (admittedly more of a concern with my former Mac Plus with 4Mb RAM). I rewrote the external with using a copy of the original parameters to return the data and haven't had a crash since, but would really like to know if there is a general rule.

Best regards
Thomas Fischer

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to