Try and see if you sometimes get invalid data when you receive data. This could cause a potential crash, depending on how you've set up your game. When starting to develop multiplayer for my game, locally it ran perfect. However, when connecting with a friend of mine who runs Windows 7, I discovered some GM:S built-in networking issues. I should totally point these out some day.
Anyhow, here's the list of "don'ts", and they (almost) all have to do with buffer writing (please note that all these were tested with a byte alignment of 1 and 2):
1) You CANNOT use buffer_u8 / buffer_s8 in conjunction with buffer_s16 / buffer_u16 / buffer_f32
2) buffer_string should always come before buffer_f32
3) buffer_f32 may only be used after buffer_s16 / buffer_u16, unless these types are unused
4) You may only send ONE packet per step, otherwise packets seem to get 'lost' every now and then
5) Using a buffer_grow, may result in not having anything work on it: buffer_fixed seems to be most stable (buffer_wrap is untested, however)
Have a look if any of these things mess with your networking.
A common thing for a tutorial is to do a sample packet like this:
buffer_seek(buffer, buffer_seek_start, 0);
network_send_packet(socket, buffer, buffer_tell(buffer));
This works locally, however, if you send this to someone else over TCP connection, this will not work if your buffer isn't aligned to 1. And they do not tell you this.
I assume the issue has to do with how Windows handles the actual buffer reading. I think Windows 8+ seems to be fine, however, Windows 7 and down seem to handle buffers differently, which could cause severe reading issues.
Test if your friend can host the game locally without it crashing. If it does crash, this is a sign it's because of your friend's pc.
That should be all advice I can give you right now!