That's a bug in MuleUDPSocket.cpp line 253:
Old:
if (GetTickCount() - item.time < UDPMAXQUEUETIME) {
char sendbuffer[packet->GetPacketSize() + 2];
memcpy(sendbuffer, packet->GetUDPHeader(), 2);
memcpy(sendbuffer + 2, packet->GetDataBuffer(), packet->GetPacketSize());
New:
if (GetTickCount() - item.time < UDPMAXQUEUETIME) {
std::vector<char> sendbuffer(packet->GetPacketSize() + 2);
memcpy(&(sendbuffer[0]), packet->GetUDPHeader(), 2);
memcpy(&(sendbuffer[2]), packet->GetDataBuffer(), packet->GetPacketSize());
What's happening is a zero sized packed. memcpy works fine if it should copy zero bytes (and does nothing), but with the new code &(sendbuffer[2] fails now.
I've patched it up with
if (GetTickCount() - item.time < UDPMAXQUEUETIME && packet->GetPacketSize()) { // otherwise crash on zero sized packets (wherever they may come from)
At least it hasn't crashed since.
Personally I do like plain arrays better than complicated classes, and this is a good example why.

I just hope there aren't more bugs like this, because there are quite some changes of this sort in this version.