Tsuey / L4D2-Community-Update

Help us shape the potential future of L4D2 vanilla.
69 stars 23 forks source link

Shooting fire ammo crashes game on linux #328

Open AFPV-au opened 1 year ago

AFPV-au commented 1 year ago

Description

Whenever fire ammo is spammed, the objects in the map become transparent and the game crashes shortly after.

Been this way for a few years now.. In normal versus games it can be OK as long as you dont get hit with it.. Sometimes objects will dissappear anyway and you can see though the map for an extended period of time until it crashes. Best thing to do is instantly issue console command 'status', get server IP and port, then connect back to it to continue playing.

This totally breaks modded servers with multiple players using fireammo. Have been unable to withstand even a few seconds of fire ammo before a crash.

Seems strange it was introduced in an update some time ago... Been putting up with it for years.. Have updated the OS version, and the video card / cpu a few times in between and i've always had this bug. Would be nice if it went away

Reproduction steps

Just get hit with fireammo more than 5 times.

Watch a few people send fireammo at targets from a distance.

Results in all objects disspearing from map (transparent), then the game will crash some time after depending how much fireammo is used.. Allows to see though the map and see the special infected though walls (that are objects) but mostly it's a massive annoyance.

Additional files

No response

AFPV-au commented 1 year ago

I will note this is present on linux pop_os 20.04 LTS with my current hardware config rx6700xt video

Has been present with multiple cards though (radeon) rx580 and rx6700xt

happens both with using -vulkan, and seems somewhat worse without (quicker to crash)

FurtadoPires commented 1 year ago

Are you using any mods?

AFPV-au commented 1 year ago

No mods

On Fri, 27 Jan 2023 at 02:19, FurtadoPires @.***> wrote:

Are you using any mods?

— Reply to this email directly, view it on GitHub https://github.com/Tsuey/L4D2-Community-Update/issues/328#issuecomment-1405936985, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOIHOYDPAWDQE7CBNDPJPYDWUMWDDANCNFSM6AAAAAAUH72XNA . You are receiving this because you authored the thread.Message ID: @.***>

AFPV-au commented 1 year ago

No installed in my client. But I should ad that playing on a modded server makes this infinitely worse.

ON a modded server with 24 players the fireammo will crash instantly, every time.

On a non-modded offical server playing versus.. Sometimes the fireammo can be used and my client will survive it.. I have to avoid looking at it, or being hit with it. I can use it however, most of the time, as long as I shoot one target at a time and not light up a whole patch of zombies. I find it very risky.. If I am playing special infected and I see a fireammo get dropped I will retreat and wait until its used outside the range of seeing the flames rendered. As a survivor I will take it and never deploy to avoid the game crashing lol.. Can you believe I have 2k hrs and thje last 250 have been spent doing that.

Hope that extended description helps.

AFPV-au commented 1 year ago

This has persisted having installed, uninstalled, etc L4d2 over atleast 5 years

AFPV-au commented 1 year ago

I recall it being around 2017 when I first noticed it, and its been getting worse with more updates .. At first my client only crashed when a cheating jockey would teleporty a player out of the map... Then I would loose objects.. after that I noticed the fireammo would crash it after a few minutes.. In the beginning the map objects vanishing could just continue playing on.. With no crash.. Lately its crashing within a few seconds.. Sometimes faster than I can open the console and reconnect to the server.

AFPV-au commented 1 year ago

All on POP_OS 20.04LTS (Might have been on 18.04 at the beginning .. somewhere early 2018 .. also not playing a lot again until 2020)

I recall the timeframe due to rarely forgetting things but also its a the point I stopped commercial truck driving and moved off a lap for the first time in a decade since being a unix sys admin ;-) So take it with a grain of salt but yeah.. Around then and about that.

Persisted since installing (over the years)

Atleast one OS swap since then, though I keep the OS updated (dist-upgrade)

Must have uninsalled and reinsalled l4d2 10 times atleast.. including deleting its folder (.steam/debian-installation/steamapps/common/Left\ 4\ Dead\ 2/)

Its been with me on POP_OS 20.04 since 2020 on all the hardware below as this pc got upgraded over the years, but definitely before that too.

ryzen 3400G APU ryzen 3400G APU + rx580 ryzen 3 3300x + rx580 ryzen 3 3300x + rx6700xt ryzen 9 3900x + rx6700xt

FurtadoPires commented 1 year ago

Try to launch steam using the terminal, then launch the game. Once the game crashes you'll probably see the output of the crash.

Since I never had this problem in my Manjaro it might be a specific problem with Pop_os

AFPV-au commented 1 year ago

./hl2.sh: line 72: 130678 Segmentation fault (core dumped) ${GAME_DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@

AFPV-au commented 1 year ago
Console History (reversed)

188(422.463373):  CUtlLinkedList overflow! (exhausted index range)
187(422.463371):  CUtlLinkedList overflow! (exhausted index range)
186(422.463369):  CUtlLinkedList overflow! (exhausted index range)
185(422.463367):  CUtlLinkedList overflow! (exhausted index range)
184(422.463364):  CUtlLinkedList overflow! (exhausted index range)
183(422.463362):  CUtlLinkedList overflow! (exhausted index range)
182(422.463360):  CUtlLinkedList overflow! (exhausted index range)
181(422.463358):  CUtlLinkedList overflow! (exhausted index range)
180(422.463356):  CUtlLinkedList overflow! (exhausted index range)
179(422.463354):  CUtlLinkedList overflow! (exhausted index range)
178(422.463351):  CUtlLinkedList overflow! (exhausted index range)
177(422.463349):  CUtlLinkedList overflow! (exhausted index range)
176(422.463346):  CUtlLinkedList overflow! (exhausted index range)
175(422.463344):  CUtlLinkedList overflow! (exhausted index range)
174(422.463342):  CUtlLinkedList overflow! (exhausted index range)
173(422.463340):  CUtlLinkedList overflow! (exhausted index range)
172(422.463338):  CUtlLinkedList overflow! (exhausted index range)
171(422.463335):  CUtlLinkedList overflow! (exhausted index range)
170(422.463332):  CUtlLinkedList overflow! (exhausted index range)
169(422.463315):  CUtlLinkedList overflow! (exhausted index range)

Maybe related..? That's the last console output from the crash dump

Paged Pool
prev PP PAGES: used: 0, free 0
final PP PAGES: used: 0, free 0
memallocfail? = 1
Active: active SpawnCount 52 MapLoad Count 1
Error count 0, end demo 0, abort count 0
AFPV-au commented 1 year ago

Managed to cause it twice, both times the last console output in the crashdump is

Console History (reversed)

4316(9746.867467):  CUtlLinkedList overflow! (exhausted index range)
4315(9746.867465):  CUtlLinkedList overflow! (exhausted index range)
4314(9746.867463):  CUtlLinkedList overflow! (exhausted index range)
4313(9746.867460):  CUtlLinkedList overflow! (exhausted index range)
4312(9746.867458):  CUtlLinkedList overflow! (exhausted index range)
4311(9746.867455):  CUtlLinkedList overflow! (exhausted index range)
4310(9746.867453):  CUtlLinkedList overflow! (exhausted index range)
4309(9746.867451):  CUtlLinkedList overflow! (exhausted index range)
4308(9746.867449):  CUtlLinkedList overflow! (exhausted index range)
4307(9746.867446):  CUtlLinkedList overflow! (exhausted index range)
4306(9746.867444):  CUtlLinkedList overflow! (exhausted index range)
4305(9746.867442):  CUtlLinkedList overflow! (exhausted index range)
4304(9746.867439):  CUtlLinkedList overflow! (exhausted index range)
4303(9746.867437):  CUtlLinkedList overflow! (exhausted index range)
4302(9746.867434):  CUtlLinkedList overflow! (exhausted index range)
4301(9746.867432):  CUtlLinkedList overflow! (exhausted index range)
4300(9746.867430):  CUtlLinkedList overflow! (exhausted index range)
4299(9746.867427):  CUtlLinkedList overflow! (exhausted index range)
4298(9746.867424):  CUtlLinkedList overflow! (exhausted index range)
4297(9746.867407):  CUtlLinkedList overflow! (exhausted index range)
AFPV-au commented 1 year ago

I'd say that's not an issue with my os, looks like an issue with memory management internal to the game and its related to the use of fire ammo...

AFPV-au commented 1 year ago

It "feels" to me like its to do with the spawning of the fire effect, and it's to do with whatever is function is forming the linked list of spawned items. The fire ammo flame spawning function is either corrupting the list of items in the game when the index range overflows, or breaking the list in such a way that the game functions that process items in the map no longer work (or return) thereafter. Once the bug is triggered (always by using incendiary ammo) all items in the game dissappear, shortly before the game segfaults. Segfault is the access of unallocated memory, so it suggests the link list is unterminated and the function is reading other data at the point before the crash. That would further suggest that the function that adds the fire ammo flame effect items to the game doesnt handle an out of bounds index range safely..

I know that's not very technical, in the context of l4d2, but it's the best I've got as to a helpful guess.. Hopefully it's compelling enough that someone can get to the bottom of it.

The first crash there was caused by lots of people unloading in a map with fire ammo, the second crash was me unloading point blank on a tank with 50 rounds of fire ammo.

AFPV-au commented 1 year ago

Screenshot from 2023-02-05 17-28-14