04:48 < bridge> Is there some MAX_TEAM in network.py? 04:49 < bridge> Ddrace team vs vanilla team makes no sense. 05:10 < bridge> why? 05:11 < bridge> we support 0.6 protocol and ddnet extensions so it makes sense to have both 05:13 < bridge> also I think you can use cpp enums/defines from network.py 05:13 < bridge> or some of them 05:16 < bridge> maybe just the generated ones 05:33 < bridge> idk its just annoying to have both in the codebase i say drop everything non ddnet :giftee_green: 09:30 < bridge> ``` 09:30 < bridge> byfox@byfox-x99e /m/h/c/C/ddnet-insta-fork (pr_refactor_text)> cat -A src/game/server/instagib/entities/text/text.h | head -5 09:30 < bridge> M-oM-;M-?#ifndef GAME_SERVER_INSTAGIB_ENTITIES_TEXT_TEXT_H$ 09:30 < bridge> #define GAME_SERVER_INSTAGIB_ENTITIES_TEXT_TEXT_H$ 09:30 < bridge> ``` 09:30 < bridge> xd 09:39 < ws-client> **** xd 09:39 < bridge> gumo ^.^ 09:41 < bridge> I was trolled by special characters that aren't visible in Idea. 09:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1451494755455336530/HpZZzOT.png?ex=69466155&is=69450fd5&hm=f9b2cb860086e5e3f3143bcb2ffa96234c2b11abcf00d8de36bbe40bae6ae88f& 09:41 < bridge> omg 09:51 < ws-client> **** @learath2 i have new findings. My memory leak is not tied to turning ON massif, heaptrack or tcmalloc. It is about turning OFF asan. As soon as I run a server with asan it leaks memory hm. 09:52 < ws-client> **** any idea what to do here? isn't ddnet also running some servers with asan? Could still be an issue i can fix in my code i assume. But i can not track allocations with asan can i? 09:57 < ws-client> **** hm trying to heaptrack with asan gets stuck on shutdown 10:34 < ws-client> **** how long does it take to register a vanilla teeworlds 0.7 server in the ddnet master? 10:35 < ws-client> **** its online since like a minute and the log says its registered 10:35 < ws-client> **** ah never mind its up 10:35 < ws-client> **** i was just checking my favorites and my favorite was the 0.6 address 10:42 < bridge> i just missclicked a 10min minesweeper game... 11:26 < bridge> Uh, this is tough, now you need to start understanding how asan works 11:27 < bridge> I can't quite imagine it behaving like that, but I am also not completely familiar with asan internals 11:28 < bridge> <0xdeen> no we're not. asan increases memory usage a lot, and I bet there is some memory being lost, if not directly leaked. We restart our servers once a day 11:30 < bridge> At least I know a place where the server does UB 11:30 < bridge> but I don't know what to do about this 11:38 < bridge> ^ closed as duplicate before anyone wonders 13:22 < ws-client> **** lets go new type checker dropped 13:23 < ws-client> **** https://astral.sh/blog/ty 13:27 < bridge> I just wanted to write "it says it's extremely fast, is it written in rust at least", it is :pepeW: 13:28 < ws-client> **** yeye 13:28 < ws-client> **** its the ruff and uv guys doin it 13:28 < ws-client> **** can't wait for them dropping their own python runtime written in rust 13:29 < ws-client> **** @heinrich5991 how does one run the new pyson integration tests? -.- 13:29 < ws-client> **** `2025-12-19 13:27:32 I fifo: can't remove file 'build-san-headless/integration_start_server_azwla_76/server0.fifo'` 13:29 < ws-client> **** `python3 scripts/integration_test.py --keep-tmpdirs build-san-headless/ start_server` this fails on my machine 13:30 < ws-client> **** also can we hide the python trace and show log errors of the client and server instead? 13:37 < bridge> 💀 14:12 < bridge> https://www.cloudflarestatus.com/ 14:14 < ws-client> **** holy shit i was about to bet my live savings on polymarket that cloudflare wasnt gonna outage until 2026 14:19 < bridge> ChillerDragon: running the integration test from the source folder should work (it does locally for me and in the CI). I was already working on showing stdout/err on integration test failures, I can push it later today. 14:36 < ws-client> **** okay nice 14:37 < ws-client> **** but yea idk how to run the new python tests at all 14:37 < ws-client> **** it fails for me on all tests on master 16:53 < bridge> I just finished a map but didnt get any points. commands like /points also dont work. ddnet.org/status/ says the server is up tho 16:57 < bridge> sometimes it takes a day to propagate 16:58 < bridge> now I got the points but the map is still unfinished 16:59 < bridge> ^ ^^ 16:59 < bridge> i thought if it updates, it updates all at once 17:02 < bridge> I think the point updating and the ranks are done in separate contexts 17:04 < bridge> chillerdragon: please stop telling people not to leave review comments 17:07 < ws-client> **** @heinrich5991 why not? 17:07 < ws-client> **** i think it was a destructive review comment 17:08 < bridge> because the job of the reviewer is to look at the broader context and understand it, also leave comments with respect to that 17:08 < ws-client> **** okay sure 17:09 < ws-client> **** but its also the job of the reviewer to not put additional load onto the contributor 17:09 < ws-client> **** otherwise open prs are always work 17:09 < bridge> reviewing is more work than making a PR 17:09 < ws-client> **** its not like there was a flaw in the pr 17:09 < ws-client> **** it worked 17:09 < ws-client> **** as is and it was an improvement 17:09 < bridge> yes, but it was incomplete 17:09 < ws-client> **** it was complete for me 17:09 < bridge> just being an improvement is not enough for a PR to be merged 17:10 < ws-client> **** i looked at one error message on one operating system 17:10 < bridge> but it has to be complete for ddnet, not the PR author 17:10 < ws-client> **** could say that its still incomplete that there are still dbg_msgs in other files 17:10 < ws-client> **** if the reviewer wants to widen the scope they can do that in a follow up pr 17:10 < bridge> I disagree 17:10 < ws-client> **** i dont like checking out old branches because a reviewer had some idea 17:10 < bridge> the PR should stand on its own 17:11 < ws-client> **** it did stand on its own 17:11 < bridge> then don't expect your PRs to be merged in all cases 17:11 < bridge> if you don't like updating your PRs 17:11 < bridge> that's nothing unique to ddnet 17:11 < ws-client> **** updating prs is always bad 17:11 < ws-client> **** it should be avoided if possible 17:11 < ws-client> **** only if there are actual flaws 17:11 < bridge> show me an open-source project which handles it that way 17:12 < ws-client> **** https://github.com/ddnet-insta/ddnet-insta/ 17:13 < ws-client> **** coming up with tasks for the contributor is what makes contributing to ddnet painful 17:13 < ws-client> **** and it makes changes more risky 17:13 < ws-client> **** it invalidates the contributors testing and previous reviews 17:13 < ws-client> **** and increases the diff 17:14 < bridge> yes. sometimes the best change isn't the most minimal diff 17:14 < ws-client> **** yes sometimes 17:14 < ws-client> **** but not always 17:14 < bridge> okay 17:14 < ws-client> **** i feel like i can't touch any piece of the code without getting bs about it being legacy code that i have to fix to get a merge 17:14 < bridge> if you want to discuss whether reviews are appropriate, please talk to the reviewer directly in the future 17:15 < ws-client> **** i did talk to the reviewer directly 17:15 < bridge> instead of telling reviewers not to review your code 17:15 < ws-client> **** or wdym 17:15 < bridge> DM 17:15 < ws-client> **** why? 17:15 < ws-client> **** i like things being in the open 17:15 < bridge> and I'm telling you to stop telling reviewers not to review 17:15 < bridge> in the future 17:15 < bridge> in the open 17:16 < ws-client> **** its not about not reviewing 17:16 < bridge> the "followup PR" is a red herring btw 17:17 < bridge> everything can be done in a "followup PR" 17:17 < ws-client> **** instead of writing a comment one a can do a pr 17:17 < ws-client> **** that would be a much better flow imo 17:17 < bridge> it's just trying to absolve yourself of responsibility 17:17 < bridge> please just say "I won't do it" instead 17:17 < bridge> the other thing is deceiving IMO 17:17 < ws-client> **** deceiving how? 17:17 < bridge> anything "can be done in a followup PR" 17:18 < bridge> it's not new information 17:18 < bridge> you just want to sugarcoat saying "I don't want to do it" 17:18 < ws-client> **** yes i dont want to do it but sometimes i still do it and i think its bad 17:19 < ws-client> **** its also a loophole in the dont merge your own code rule 17:20 < ws-client> **** if the reviewer can send tasks to the contributor and still merge it. That means that the contributor has to work for the reviewer to get a merge and the reviewer can push their own ideas without second approval. 17:20 < bridge> I wouldn't exactly say so (since it's still the PR author looking over the changes), but if you want to open that discussion, we can 17:20 < ws-client> **** That of course does not always apply but sometimes 17:20 < ws-client> **** yes i was trying to talk to you about that since a few weeks xd 17:23 < ws-client> **** @learath2 omaagwd vanilla teeworlds also memleaks with asan 17:23 < ws-client> **** can u send pr to asan pls? 17:23 < ws-client> **** xd 17:24 < ws-client> **** so fakin annoying that i cant run servers with asan 17:24 < ws-client> **** bruder was 17:24 < ws-client> **** https://zillyhuhn.com/cs/.5b7cea1c-f7de-4bda-ad5d-d25fa5e1d035.png 17:27 < bridge> I also had some weird error like that in the Windows CI indicating a build target did not exist 17:28 < bridge> in some IDEs on windows I need to compile against "testrunner" instead 17:29 < bridge> But testrunner is the executable. `run_tests` should just build testrunner and then run it. 17:36 < ws-client> **** this was ubuntu fancy. I assumed that i messed something up during the merge. 17:36 < ws-client> **** So can we blame this on github? 17:36 < ws-client> **** this feels like it has to be a cmake issue on our side 17:40 < bridge> @robyt3 can you add me as a second contact for the unique community, if you not have already done so? At least I can post in the admin chat of unique if there are concerns 17:45 < bridge> Open admin-mail 🙂 Though I suppose another community admin would have to confirm, or is this information on unique's website or servers? 17:49 < ws-client> **** @heinrich5991 is it intentional that all errors of the integration tests seem to be timeout? 17:50 < ws-client> **** i feel like it doesnt show if client or server crashed 17:51 < bridge> I think that's a bug with some systems. I was working on running the integration tests on Windows and macOS in the CI, but some failures to run are apparently not detected as abnormal exits. 17:53 < ws-client> **** worked in the bash version :p 17:53 < ws-client> **** i find the python one so much harder to reason about 17:53 < ws-client> **** like what the current working directory is and all the oop magic 17:55 < ws-client> **** @robyt3 how is your python trace pr goin? 17:55 < bridge> The smoke test case is simply too large to debug. Not like we should remove it, but we should add multiple smaller tests cases checking individual behaviors. 17:55 < ws-client> **** sounds good yes 17:56 < ws-client> **** but i think more important for now is to improve the error output 17:56 < ws-client> **** even the small tests failing can not be debugged by looking at the error message "timeout" 17:56 < ws-client> **** WOAH 17:57 < bridge> As good as done, just need to fix the new style problems 17:57 < ws-client> **** i rerun the ci of this one 17:57 < ws-client> **** https://zillyhuhn.com/cs/.5b7cea1c-f7de-4bda-ad5d-d25fa5e1d035.png 17:57 < ws-client> **** and second time i passed????? 17:57 < ws-client> **** what can github do that a ninja error like this is shown and hidden again on a pipeline RERUN 17:57 < ws-client> **** ????????????????????????? 17:57 < ws-client> **** time to switch to codeberg xd 17:57 < ws-client> **** @robyt3 epic im ready to review it 17:58 < ws-client> **** is there a chance that our flaky integration tests can be blamed on github? 17:58 < bridge> GitHub CI seems increasingly vibe coded :monkaS: 17:58 < bridge> https://github.com/actions/runner/issues/3792 17:58 < ws-client> **** ye ik the meme :D 17:59 < ws-client> **** and yet investors are pricing in 5 years of growth because of everyone being so much more productive with AI 18:01 < ws-client> **** integration test keeps a bunch of dirs in my build folder even if i dont pass `--keep-tmpdirs` <:tee_thinking:478629518358085653> 18:01 < ws-client> **** oh wait nice 18:01 < ws-client> **** we got a `raise RuntimeError(f"unclean exit: {self.reason}")` 18:01 < ws-client> **** its actually supported, poggies <:poggers2:1008007455936094328> 18:02 < bridge> It should only keep the folders if the test failed so you can debug it 18:03 < ws-client> **** thanks for trying to fix the lint error but my linter didnt read the comment -.- 18:03 < ws-client> **** https://zillyhuhn.com/cs/.2238b378-838b-403e-896d-12f7358a61d7.png 18:03 < ws-client> **** @robyt3 ah i see thanks 18:08 < bridge> thank you from informing me, that the website needs an update xD 18:10 < bridge> Are you 100% certain this is leaking until it goes OOM? From everything I know about ASan my brain is shouting at me that this can't happen 18:11 < bridge> <0xdeen> Yeah, it's how asan works 18:11 < bridge> Also I'd suggest not running asan in prod, it is quite performant compared to something like valgrind, but it still has very significant overhead 18:11 < bridge> python actually has a limit (of 350 or something (: ) 18:12 < bridge> <0xdeen> What size did you set the quarantine_size to? That's at least how much freed objects will be kept around 18:12 < bridge> Yes as in you also think it shouldn't just be growing in memory use forever? 18:12 < bridge> Yeah the quarantine is the only thing I can think of that would grow, but it should peak, not keep growing in memory use 18:13 < bridge> <0xdeen> It might oom if you don't have enough memory in your system 18:13 < bridge> I can't even tell who is the current contact, is is tezcan or timakro 🙈 is this some hidden internal document? 18:13 < bridge> but it shouldn't just grow in memory use unboundedly unless you are something extremely weird 😄 18:14 < ws-client> **** @learath2 asan in prod worked totally fine for me so far. There was no noticable performance impact and it caught quite a few programming woopsies. 18:14 < bridge> I think it was timarko, but heinrich did the contacting for the community tokens 18:14 < bridge> yes, which I took over, or at least implemented for unique 18:15 < ws-client> **** @learath2 my baseline consumption is 3GB and it used all 7GB available when running with asan until the server went into full denial of service 18:15 < ws-client> **** i can set a quarantine_size uhm idk i just copied what the ddnet readme has 18:15 < bridge> > The AddressSanitizer runtime doesn't release memory back to the OS during execution so that the memory isn't all allocated up front. From the OS's point of view, it may look like there's a memory leak. 18:15 < bridge> https://learn.microsoft.com/en-us/cpp/sanitizers/asan-known-issues?view=msvc-170 18:16 < ws-client> **** sadge 18:16 < bridge> So very roughly the shadow memory is 1/8th of the entire address space, and when the OS does allocate those pages it'll never get returned 18:17 < ws-client> **** so if i buy more ram i should reduce the risk of OOM? 18:17 < ws-client> **** not just delay 18:17 < bridge> but honestly, it should be consuming 1/8th of what you really use + some overhead for shitty alignment 18:17 < ws-client> **** nah i cant afford more ram :/ 18:17 < ws-client> **** i just turn asan off i guess 18:17 < ws-client> **** sad 18:18 < bridge> did you try with just vanilla ddnet btw? 18:18 < ws-client> **** i tried with ddnet++ and vanilla teeworlds today 18:19 < bridge> You can try with a much smaller quarantine I guess 18:19 < ws-client> **** ddnet++ is the biggest bloat crap there is but its still different than ddnet-insta and teeworlds master should be quite pure 18:21 < ws-client> **** `ASAN_OPTIONS=quarantine_size_mb=500` something like this? 18:22 < bridge> The default seems to be 256 only 18:22 < ws-client> **** but default of quarantine_size is -1 xd 18:22 < ws-client> **** that looks like infinite 18:22 < ws-client> **** so i try 100 instead? 18:22 < bridge> https://github.com/google/sanitizers/wiki/addresssanitizerflags 18:22 < ws-client> **** yea lemme try 100 18:22 < ws-client> **** ye im browsing that page rn 18:23 < bridge> quarantine_size is deprecated 18:23 < ws-client> **** ye 18:28 < bridge> "updating prs is always bad" what lol 18:28 < ws-client> **** yes 18:28 < ws-client> **** every change is a risk and annoyance 18:29 < ws-client> **** previous tests and reviews are invalidated 19:08 < bridge> erm 19:08 < bridge> "every change is a risk and annoyance" 19:08 < bridge> well yeah I agree but surely that then includes the initial pull request too right? 19:08 < bridge> so if you're gonna make a change you best make sure it's a good one 20:43 < ws-client> **** nah initial pr is different 20:43 < ws-client> **** the author chose to do what he wanted and when he wanted it 20:43 < ws-client> **** reacting to reviews can come with inconvienient timing and demands the contributor does not agree with 20:44 < ws-client> **** how am i the one being quoted after heinrich dropped "just being an improvement is not enough for a PR to be merged" 21:21 < ChillerDragon> woah that is a long name xd 21:21 < ChillerDragon> ⸻⸻⸻⸻⸻ 21:21 < bridge> MMMMMMMMMMMMMMM is the longest in length i think 21:22 < bridge> since capital M takes up the most space ? 21:22 < ChillerDragon> oh true thats also long 21:22 < ChillerDragon> idk i smh thought this line is longer 21:30 < bridge> initial pr is *exactly the same* except that the responsibilities are flipped 21:31 < bridge> the maintainer chose to do what he wanted and when he wanted it 21:31 < bridge> reacting to pull requests can come with inconvenient timing and demands the maintainer does not agree with 21:33 < bridge> I'm being a bit facetious but what I'm getting at is that if you as a pr author have experienced cases where reviewers asked for changes you don't agree with, you also need to understand that there can be changes that you may pr that a maintainer may not agree with 21:34 < bridge> you can certainly choose definition such that "just being an improvement is not enough for a PR to be merged" comes out as wrong but I do agree with that statement 21:35 < bridge> the point being that "improvement" is hard to qualify because there is never only one axis 21:35 < bridge> an extremely common example is pull requests that fix a problem in one instance when it actually occurs in multiple other instances as well 21:36 < bridge> those may be a strict improvement in the sense that the outside visible behavior works in strictly more cases but the resulting code may be less consistent and hence less maintainable 21:36 < bridge> so it may make sense to require that a pr fixing that problem in one instance fixes it in all instances 21:36 < bridge> 22:47 < ws-client> **** yes i agree with that actually 22:48 < ws-client> **** but the logger situation already is inconsistent 22:48 < ws-client> **** any diff to update it to new system is good, i like to work in silos looking at the code that i am currently working with 22:48 < ws-client> **** the windows code doesnt even run on my system 22:52 < bridge> The bigger the pr the slower the merge and the bigger the conflicts to be maintained 22:52 < bridge> Replacing all calls to dbg\_msg is just so much harder to actually get merged 22:53 < bridge> He didn’t ask for that but still asked for more 22:53 < bridge> I don’t think the amount is obvious here 23:34 < bridge> I think with cleanup like replacing `dbg_msg` calls, commits should change entire files/classes/features. This initially made it inconsistent within `fifo.cpp` and `CFifo`.