necropotame / teeworlds-infclass

Infection Mod with a class system for TeeWorlds
Other
40 stars 25 forks source link

Client segfault when joining an server with eidalfitr map #80

Closed progval closed 8 years ago

progval commented 8 years ago

When I join an official server with the map infc_eidalfitr_b1502ed8.map, my client crashes.

However, this does not happen if I joined an other server before and left it (without restarting the client), or if I run teeworlds in valgrind.

I deleted ~/.teeworlds/downloadedmaps/infc_eidalfitr_b1502ed8.map, but the client still segfaults after downloading the map.

My Teeworlds client version is 0.6.3, from Debian Stretch repo.

necropotame commented 8 years ago

Thanks for reporting. Are you using the 32 or the 64 version ? Is the map editor crash too with this map ?

progval commented 8 years ago

Are you using the 32 or the 64 version ?

64 bits

Is the map editor crash too with this map ?

No

progval commented 8 years ago

Oh weird, now it works on one of the official servers, but not the other one with the same map (it used to crash with both).

By the way, the full log of running teeworlds, in case that helps:

teeworlds
[58284f4f][engine]: running on unix-linux-amd64
[58284f4f][engine]: arch is little endian
[58284f4f][storage]: couldn't open storage.cfg
[58284f4f][storage]: using standard paths
[58284f4f][storage]: added path '$USERDIR' ('/home/val/.teeworlds')
[58284f4f][storage]: added path '$DATADIR' ('/usr/share/games/teeworlds/data')
[58284f4f][storage]: added path '$CURRENTDIR' ('/tmp')
[58284f4f][binds]: bound f1 (282) = toggle_local_console
[58284f4f][binds]: bound f2 (283) = toggle_remote_console
[58284f4f][binds]: bound tab (9) = +scoreboard
[58284f4f][binds]: bound u (117) = +show_chat
[58284f4f][binds]: bound f10 (291) = screenshot
[58284f4f][binds]: bound a (97) = +left
[58284f4f][binds]: bound d (100) = +right
[58284f4f][binds]: bound space (32) = +jump
[58284f4f][binds]: bound mouse1 (323) = +fire
[58284f4f][binds]: bound mouse2 (324) = +hook
[58284f4f][binds]: bound lshift (304) = +emote
[58284f4f][binds]: bound rshift (303) = +spectate
[58284f4f][binds]: bound right (275) = spectate_next
[58284f4f][binds]: bound left (276) = spectate_previous
[58284f4f][binds]: bound 1 (49) = +weapon1
[58284f4f][binds]: bound 2 (50) = +weapon2
[58284f4f][binds]: bound 3 (51) = +weapon3
[58284f4f][binds]: bound 4 (52) = +weapon4
[58284f4f][binds]: bound 5 (53) = +weapon5
[58284f4f][binds]: bound mousewheelup (331) = +prevweapon
[58284f4f][binds]: bound mousewheeldown (332) = +nextweapon
[58284f4f][binds]: bound t (116) = chat all
[58284f4f][binds]: bound y (121) = chat team
[58284f4f][binds]: bound f3 (284) = vote yes
[58284f4f][binds]: bound f4 (285) = vote no
[58284f4f][console]: executing 'settings.cfg'
[58284f4f][binds]: bound tab (9) = +scoreboard
[58284f4f][binds]: bound return (13) = chat all
[58284f4f][binds]: bound quotedbl (34) = +weapon5
[58284f4f][binds]: bound ampersand (38) = +weapon1
[58284f4f][binds]: bound quote (39) = +weapon4
[58284f4f][binds]: bound leftparen (40) = +weapon3
[58284f4f][binds]: bound a (97) = +left
[58284f4f][binds]: bound c (99) = +show_chat
[58284f4f][binds]: bound d (100) = +right
[58284f4f][binds]: bound r (114) = kill
[58284f4f][binds]: bound t (116) = chat team
[58284f4f][binds]: bound z (122) = +jump
[58284f4f][binds]: bound world_73 (233) = +weapon2
[58284f4f][binds]: bound right (275) = spectate_next
[58284f4f][binds]: bound left (276) = spectate_previous
[58284f4f][binds]: bound f1 (282) = toggle_local_console
[58284f4f][binds]: bound f2 (283) = toggle_remote_console
[58284f4f][binds]: bound f3 (284) = vote yes
[58284f4f][binds]: bound f4 (285) = vote no
[58284f4f][binds]: bound f10 (291) = screenshot
[58284f4f][binds]: bound rshift (303) = +spectate
[58284f4f][binds]: bound lshift (304) = +emote
[58284f4f][binds]: bound mouse1 (323) = +fire
[58284f4f][binds]: bound mouse2 (324) = +hook
[58284f4f][binds]: bound mousewheelup (331) = +nextweapon
[58284f4f][binds]: bound mousewheeldown (332) = +prevweapon
[58284f4f][console]: failed to open 'autoexec.cfg'
[58284f4f][client]: starting...
[58284f4f][client/sound]: sound init successful
[58284f4f][engine/mastersrv]: refreshing master server addresses
[58284f4f][localization]: loaded 'languages/french.txt'
[58284f4f][textrender]: loaded pFont from '/usr/share/games/teeworlds/data/fonts/DejaVuSans.ttf'
[58284f4f][textrender]: default pFont set 0x55a647c36700
[58284f4f][]: pFont memory usage: 2097152
[58284f50][gameclient]: initialisation finished after 663.12ms
[58284f50][client]: version 0.6 626fce9a778df4d4
[58284f50][engine/mastersrv]: saving addresses
[58284f50][]: pFont memory usage: 2621440
[58284f50][]: pFont memory usage: 2883584
[58284f50][]: pFont memory usage: 3014656
[58284f50][]: pFont memory usage: 3276800
[58284f50][]: pFont memory usage: 3407872
[58284f50][]: pFont memory usage: 3538944
[58284f50][]: pFont memory usage: 3801088
[58284f53][client]: disconnecting. reason='unknown'
[58284f53][client]: connecting to '137.74.156.196:10000'
[58284f53][]: pFont memory usage: 4849664
[58284f53][client]: connected, sending info
[58284f53][client]: loading map, map=infc_eidalfitr wanted crc=b1502ed8
[58284f53][datafile]: loading. filename='maps/infc_eidalfitr.map'
[58284f53][datafile]: could not open 'maps/infc_eidalfitr.map'
[58284f53][datafile]: loading. filename='downloadedmaps/infc_eidalfitr_b1502ed8.map'
[58284f53][datafile]: allocsize=18944
[58284f53][datafile]: readsize=18384
[58284f53][datafile]: swaplen=18404
[58284f53][datafile]: item_size=17492
[58284f53][datafile]: loading done. datafile='downloadedmaps/infc_eidalfitr_b1502ed8.map'
[58284f53][client]: loaded map 'downloadedmaps/infc_eidalfitr_b1502ed8.map'
[58284f53][client/network]: loading done
[1]    29478 segmentation fault  teeworlds
necropotame commented 8 years ago

Can you run it with gdb ? Type "gdb teeworlds", then "run". Once the server crashes, type "bt" and send me the result.

This bug affect a lot of players but I can't reproduce it :(

progval commented 8 years ago

Running it with gdb makes gdb and X freeze.

However, I noticed something else: it only crashes/freezes if I connect to the server using a double-click on the server item. If I navigate with arrows and then press Enter, it works fine.

necropotame commented 8 years ago

You can solve this problem with X in two manners: 1) Running TW in windowed mode 2) Running TW in fullscreen. Once X freezes, Press Ctrl+Alt+F1. You are now in a "hidden" terminal running without X. Usually, if you get back to X with Ctrl+Alt+F7, you can now access to your desktop (try to switch to a different desktop for exemple). If it doesnt work, go in "Ctrl+Alt+F1", login, and kill the process (killall teeworlds -9). Then, get back to X using Ctrl+Alt+F7

necropotame commented 8 years ago

I've fixed something. Tell me if it crash again.

progval commented 8 years ago

I already tried 2.

However, with 1, I can get a backtrace... which is not very helpful because debug symbols are missing:

#0  0x0000555555566ea7 in ?? ()
#1  0x000055555556bfc2 in ?? ()
#2  0x00005555555bc5aa in ?? ()
#3  0x00005555555bce9c in ?? ()
#4  0x00005555555bcfbf in ?? ()
#5  0x00005555555bdb3d in ?? ()
#6  0x0000555555563e76 in main ()
progval commented 8 years ago

I've fixed something. Tell me if it crash again.

On the official servers? No change.

necropotame commented 8 years ago

Sorry, I've not removed the cache. Try it again on official servers

progval commented 8 years ago

It works now.

I just managed to get the debug symbols. Could you revert your change so I can get a traceback?

necropotame commented 8 years ago

Don't worry, the bug is fixed. The number of layers in a map group was false

progval commented 8 years ago

Cool, thanks!

It looks like a bug in the client to segfault instead of showing an error, though.

necropotame commented 8 years ago

Yes. Both vanilla and DDNet never check for errors :/

Stitch626 commented 8 years ago

Yeah, sadly thats true. There is also a check missing when you load images (png files)....