Perhaps the WDTO_8S constant is missing from the avrlibc (underlying C library) version on the Linux install you have?drewgarth wrote: c) I discovered that for some reason either the linux version of the IDE was somehow not allowing me to use an 8s watchdog timeout, so i was forced to change this to 2s
I just had a thought, it is possible some network operation in your sketch could take more than 2s but less than 8s? Meaning it wouldn't have tripped a watchdog reset before, but does trip one now.
In theory, the software reset when the Arduino starts up should take care of this, but if the W5100 was in the middle of some other SPI transaction then it may not recognise the reset command.
As you've already said, changing the watchdog usage pattern to only enable the watchdog timer when you actually want to reset right now (ie wdt_enable(WDT_120MS); while(1) { }) may be the best solution (although then you won't get a reset if the sketch does get locked up blocked on something.)
Although it may be wise to put in a hardware reset regardless, just to be sure.