Time Nick Message 00:11 erlehmann sfan5 i think it is lame if you mute me from #minetest-dev if you are the only person fed up with me, you can as well just use /ignore – it is different if multiple people are annoyed by me though, then it is legit ig 00:12 erlehmann also i think most ppl here aren't *that* interested in engine discussions, but whatever 00:15 sfan5 I didn't say I wouldn't remove it eventually 00:22 MTDiscord Idk if its my place to comment, but from what I've seen here, id say, sfan5, please try to work with this guy cause he seems useful to the project and well-intentioned 00:24 MTDiscord >useful looks at a lack of PR's 00:24 MTDiscord Reporting actual vulnerabilities seems useful to me.. 00:25 MTDiscord > most people do in fact not care that putting in obviously invalid input makes the game freeze or run out of memory > nor do they try that, except by accident 00:28 MTDiscord they start to care when the bad intentioned players log on. With minetest at the scale it is now, for the most part, yeah its not an issue. But if one wanted to make a larger scale server then you start to care about these vulnerabilities. Better, imo to know your programs weaknesses and that way be able to fix it later if it becomes important in the future 00:29 MTDiscord Whatever, not here to argue 00:31 MTDiscord did you even look at their issues? 00:31 MTDiscord none of them are actual security vulnerabilities 00:32 MTDiscord they don't allow to crash a server no matter how large it is 00:33 sfan5 issues reported to github do get looked at regardless 00:35 MTDiscord okay #11822 is a security vulnerability, but it allows to crash the client, and honestly I don't think it's an issue for online game 00:35 ShadowBot https://github.com/minetest/minetest/issues/11822 -- Crash on texture modifier with too much crack 00:37 MTDiscord No I didn't. My comment is entirely based on what I've read here. So yeah take it with salt to taste :P 00:40 MTDiscord don't let to fool yourself XD 00:41 erlehmann > none of them are actual security vulnerabilities 00:41 erlehmann the tp to out of bounds is a denial of service 00:42 MTDiscord what issue is that? 00:43 erlehmann the one where i continue to claim that sfan5 fixed it in the wrong way: https://github.com/minetest/minetest/issues/11769 00:44 erlehmann (just the limit is wrong the rest of the patch seems ok) 00:45 erlehmann savilli what exactly would you expect if someone tried to poke the network code like i poke settings or lua API? i think the result would be that minetest would fall over and die pretty quickly. 00:46 erlehmann savilli the actual issue is btw that dynamic content on the server will be created by players 00:47 erlehmann so let's assume we have a hang when minetest gets too many texture modifiers (we do) and a mod allows users to append texture modifiers … bad ppl exploit that 00:47 erlehmann eventually 00:48 erlehmann savilli from your very few bug reports i gather you either run a server that deals with cheaters or you develop a game that deals with cheaters or you are a cheater. which is it? 00:48 MTDiscord i'm a server admin 00:48 erlehmann then you know the length that motivated attackers will go to i guess 00:50 erlehmann i assist cora who runs the oysterity server 00:50 MTDiscord Don't allow players to apply texture modifiers? Who would expect that api to be secure? 00:50 erlehmann most of the bad actors are script kiddies who run cheat clients 00:50 erlehmann i made a proposal in the bug report how to fix the issue 00:50 erlehmann namely, divorcing parsing texture modifiers from processing them 00:51 erlehmann doing full recognition of the string before processing 00:51 erlehmann thereby getting rid of all of these shotgun parser bugs 00:52 erlehmann savilli the issue i have is that if you want me to prove that every single thing where no bounds checking or verification occurs is actually exploitable, you are wasting both of our time. most times it is easier to fix it. 00:53 erlehmann IMO the whole “let's not fix overflows properly” stance of the dev team makes no sense long-term 00:53 erlehmann it *needs* to change 00:53 erlehmann Jonathon what do you expect me to do, fix every bug i find? even when i post a patch in the issue half of the times it is not taken seriously. 00:54 erlehmann and i do write lua workarounds 00:54 erlehmann for mineclonia 00:54 erlehmann in fact, cora offered that exact workaround for minetest_game and it was not wanted 00:57 erlehmann MisterE i think most of the annoyance comes bc i look through at the code from the lens of a) someone attacking a server or client b) a user who sets all values to everything possible … and then devs are like “but who would actually do that” or “but our code without any games is not exploitable” or “i have no idea how that could happen” and disregard the bug report. 00:58 erlehmann i'd rather file those bugs in case it becomes relevant in the future 01:00 erlehmann Jonathon btw i told you before that i am not a C++ app developer. i know good architecture and how to break things, but not how to fix them as well as other ppl do. 01:00 erlehmann like i can tell you the method, but most of the time someone else will be better at writing the actual C++ code 01:00 erlehmann bc i have no routine 01:00 erlehmann and too little understanding compared to many others 01:01 erlehmann and i'd rather avoid proposing a solution that i am not sure will be correct in a language where i am not confident at all 01:02 MTDiscord if you're confident enough to make an issue, then you can fix it 01:03 erlehmann savilli what exactly you would think would happen if i propose a fix to https://github.com/minetest/minetest/issues/11828 that aligns the limits with s16 bounds? 01:03 erlehmann i expect it to be discarded 01:03 MTDiscord if you expose insecure api to clients, you shouldn't expect anybody to make it secure fro you 01:03 MTDiscord *for you 01:04 erlehmann savilli should i try making a patch for that and we see how it plays out? 01:04 MTDiscord i think we can predict that 01:04 erlehmann yeah what do you think will happen 01:06 erlehmann if you agree with me that it will probably be rejected then i don't see why i should make even the tiniest of patches if it's a waste of both my and the reviewers time 01:06 MTDiscord core devs will propose a change, you will be stubborn and won't correct anything with ridiculous excuses, and pr will be discarded 01:07 erlehmann what change would it be? 01:07 erlehmann as said before, i'd only want to align minetest.find_nodes_in_area() with the limits of the map storage to avoid future bugs 01:08 sfan5 well what are the limits of map storage? 01:09 erlehmann whatever data type the mapblock format uses, so i'd say s16 bounds 01:09 erlehmann if you had a proper type here that did typechecking etc. that would not be an issue, but you have not 01:09 MTDiscord I ran into the fact that things past the mapgen limit sort of do and sort of don't actually exist and ... I ended up just assuming it was my responsibility and added my own checks in the game code :-| 01:09 MTDiscord Given that, I would not be surprised if this class of issue doesn't triage very highly. 01:11 erlehmann the thing is, this entire category of bugs can be properly fixed by doing a few things: 1. set MAX_MAPGEN_LIMIT or how its called to >32768 in debug builds 2. compile the debug build with ubsan 3. collect the dozen or so signed integer overflows 4. fix every single one of them 01:11 erlehmann that makes the weird zone between ±31000 and s16 bounds (-32768,32767 or so?) vanish completely 01:12 erlehmann and thus gets rid of all bugs in that zone 01:12 erlehmann it would also fix a bunch of issues that are currently rare to encounter 01:13 erlehmann before anyone accuses me of being lazy: i actually did that, except for the “fix every single one of them” bit 01:13 MTDiscord Sure, but the "fix every single one of them" part sounds KIND of important... 01:13 erlehmann and stopped pretty quickly when sfan5 pointed out that there is a comment in the code that signed integer overflow shall not be fixed, better stay away from the boundaries 01:13 MTDiscord and how many issues did you collect? 01:14 erlehmann i did not file issues for that stuff 01:15 erlehmann because the predictable response from ppl who do not know how to get nodes out of bounds is “oh but mapgen stops at 31000” (which is not exactly true, but whatever) 01:15 MTDiscord but you did collect them 01:15 MTDiscord so how many? 01:15 erlehmann i remember less than a dozen, but i'd have to run it again with current code 01:15 erlehmann also that was only mapgen-triggered stuff 01:15 erlehmann so there are more 01:15 erlehmann the thing is, without actually triggering them, they lurk in the code forever 01:16 MTDiscord If you discover a whole class of bugs that you would presumably try to fix all in one PR (given the overhead cost of getting one merged) I wouldn't file separate issues for each instance, if that's what you meant... 01:17 MTDiscord you definitely were lazy, i would expect at least > 100 01:17 erlehmann Warr1024 the class of bug is “every time devs encounter a signed integer overflow with functions taking s16 coordinates or their float equivalent, they try to tie it to MAX_MAPGEN_LIMIT, which is 31000 and not the actual boundary”. it's a social problem. 01:17 MTDiscord Heh, it kind of reminds me of Pareto Creep 01:18 erlehmann what's that? 01:18 erlehmann savilli i only tested minetest_game with v7 mapgen, it doesn't exactly do much. ofc you get more if you test mcl2 or so. 01:18 erlehmann quick place a dispenser out of bounds! :D 01:18 MTDiscord Basically you reason that "99% of people don't need this" so you don't care about a fringe case. But then now since you're discounting that 1%, the goalposts are now moved and next time you say "do 99% of people not care" it's 99% of a smaller population. 01:19 erlehmann oh yeah 01:19 MTDiscord Obviously over time if you just assume that boundary regions are discardable, then those boundaries will creep inward. 01:19 erlehmann in this case, moving the limits closer to where the actual visible map is, the boundary already overlaps with it 01:19 MTDiscord I could easily tell you "if all the engine's stuff stops behaving around 31000, then just make your limits 30000" but you can only get away with that like 29 times more before it becomes everybody's problem :-) 01:19 erlehmann as the screenshot in https://github.com/minetest/minetest/issues/11828 shows https://gcdn.pbrd.co/images/oWIFZN2KTOK6.jpg?o=1 01:20 erlehmann i am standing there at about 31000,2,0 in vanilla minetest 01:20 erlehmann obviously in a visible map block 01:20 erlehmann and i can place nodes in the stone part of the map to the left and dig them 01:20 MTDiscord But if coredevs are not willing to fix something you COULD work around by just setting limits to 30000, I also kind of understand that. Personally I usually don't worry about "is this becoming a pattern" until I see it about to happen a 3rd time. 01:21 erlehmann but minetest.find_nodes_in_area() will not find them 01:21 erlehmann i already saw it happening in games 01:21 erlehmann some months ago mcl2 had the crashbutton issue 01:21 erlehmann basically in mcl2 0.71 and earlier, depowering mesecons at the visible world (x=30927 or so) border crashes the game 01:22 erlehmann because hey, someone assumed that's where the world ends 01:22 erlehmann so a button at the edge of the world crashes the game 01:22 erlehmann a jumping mob with a pressure plate … 01:22 erlehmann you see where this is going 01:22 MTDiscord As of right now, as I understand it, it might be a "modder problem", i.e. that modders are expected to account for weirdness near the map boundaries. I mean the fact that there's a 1768-wide margin zone does suggest that somebody has already sort of punted on that. 01:23 erlehmann punted? 01:23 erlehmann the raycast thing is actually the third time i encounter this 01:23 erlehmann and i already told ppl i'll stop reporting coordinate boundary bugs unless i have a fix ready 01:23 erlehmann bc they'll always do the wrong thing in response 01:25 MTDiscord I guess if this is really a serious engine bug it seems weird that I don't run into it a lot even though I tend to use very small mapgen_limits on all my servers, so players can run from boundary to boundary in a few minutes. 01:25 erlehmann Warr1024 the problem i have with that zone is that a bunch of API functions work perfectly in it and others don't. and it kinda makes sense. after all, your mapgen might stop at 31000, but what if someone makes a village at the map border? the mod code may stray out of bounds. 01:25 MTDiscord I've definitely run into SOME issues, especially with the world bottom boundary where entities want to try to fall in 01:26 erlehmann the thing is, it's serious in case of high impact, but not serious if you think about if it happens a lot 01:27 erlehmann like come on, everyone involved in the boundary discussion could write a short script to bring down all mt 5.4.1 and earlier servers 01:27 erlehmann from my POV that does not change a thing 01:27 erlehmann like, idc if the script exists 01:27 erlehmann maybe others do? 01:28 erlehmann a tangent: i think anarchy servers act as a sponge for assholes that want to have fun at others expense 01:28 erlehmann and that's also why some servers have a lot of these issues 01:28 erlehmann and others don't 01:29 MTDiscord Heh, I guess in my case I wonder whether the server stays down. If it's just a crash and doesn't persist after a restart unless manually done again from the outside, then I guess it's a lot less concerning than if it would corrupt a world and require manual fixing each time. 01:29 erlehmann i.e. shut down anarchy servers and those clowns bring down catlandia 01:29 MTDiscord Hmm, so a honeypot hypothesis then? 01:29 erlehmann nah, it's better to put them all in one room and let them fight it out 01:30 erlehmann also i kinda like playing in an adversarial environment like that 01:30 MTDiscord Seems like if you run a major server you'd have an incentive to want to run your own separate anarchy server, or pool into some collective to manage some. 01:30 erlehmann it makes creative solutions necessary 01:30 erlehmann like there was one player who continued spawnkilling noobs 01:30 erlehmann i made a client join with random input 01:30 erlehmann and respawn a lot 01:30 erlehmann after more than 20 minutes the spawnkiller complained about RSI :D 01:31 erlehmann apparently other ppl just quit after being killed 10 times 01:31 erlehmann my bot client obv ran for hours 01:31 MTDiscord Heh, you're definitely playing some kind of game, but I'm not sure whether it's a "minetest" one per se at that point 01:32 erlehmann or also recently fleckenstein helped mineclonia to tie down the ender chest inventory 01:32 erlehmann so that you can't access it without being near an echest 01:32 erlehmann it's funny to know ppl are going into combat and respawning without the ability to pull out more TNT from thin air 01:33 erlehmann i am working on a way to ruin commonly known teleportation cheats too 01:33 MTDiscord Heh, I make a game with virtually no combat, and even figuring out how to add combat to it is considered a Hard Problem, so I don't know much about that world. 01:33 erlehmann well, just join oysterity and try to stay alive if you are that curious 01:34 erlehmann it's definitely an interesting wild west thing 01:34 erlehmann like if you encounter a stranger 01:35 erlehmann i once had a player straight up to /kill bc i was following them around and they did not want to leak their teams base location 01:35 erlehmann so they suicided their character and gave me all those items to keep the location secret 01:35 erlehmann (respawning in their bed ofc) 01:38 erlehmann Warr1024 savilli btw i am always willing to collaborate on lua workarounds, those aren't held up by engine dev opinions 01:39 MTDiscord Yeah, though general workarounds are challenging too. 01:39 MTDiscord Like, I mostly just test my mod content against all sorts of boundary conditions and corner cases, wherever I can find them, and a lot of the time I end up with only fixes for very specific issues. 01:39 MTDiscord They don't necessarily evolve into general polyfill sorts of things. Though sometimes they do. 01:40 erlehmann well, with the coordinate bullshit i just overwrite the engine thing with something that checks the input against s16 boundaries 01:40 erlehmann like in mineclonia we straight up replaced minetest.find_nodes_in_area() with a wrapper 01:40 erlehmann that calls the real function 01:41 erlehmann also ppl already thought of implementing it with other functions if the engine stays broken, but that's work 01:42 MTDiscord Heh, another workaround is to pull the limit in a mapchunk or so, but using mapgen_limit for it, using lua mapgen to fill the boundary area with actual nodes that behave like ignores. There are some neat things you can do with that (like controlling the appearance or how light propagates) though obviously if you decide to change the limit later, you have to manually fix the map first. 01:43 erlehmann i see, you are another person who actually knows how to get oob nodes :D 01:44 erlehmann seriously, the “but mapgen can't go that far” thing is what annoys me the most about boundary conversations. i have yet to see a test case that proves it can't, ppl just thing the code is alright that way. 01:44 erlehmann think 01:45 erlehmann Warr1024 wanna tell me about those light tricks? 01:48 erlehmann savilli btw if you want to find more s16 overflows, just use ubsan 01:48 erlehmann set it to segfaulting with a message if you want to live admin life on hard mode 01:51 MTDiscord i know about sanitizers 01:51 MTDiscord but in my case simple running the server with ubsan doesn't show anything 01:52 MTDiscord need some malicious players whose try to get oob 01:54 erlehmann savilli what server? i can try to goad some scum on oysterity into paying you a visit, by claiming that one is easy to crash. they are super gullible! 01:54 MTDiscord The only real light trick I used was making my world boundary nodes sunlight_propagates=true, which standard ignores don't do. It causes deep underground caves near the borders to get some extra light sources, which makes them a more interesting place to be and might drive up property values there. 01:55 erlehmann > drive up property values 01:55 erlehmann gentrification, deep underground 01:55 erlehmann lol 01:55 MTDiscord Ha, well, there'd have to be a "market" for that to really work :-) 01:55 erlehmann make the world smaller ig 01:56 MTDiscord I run a mod that does background lighting recalcs all the time, so I'm not concerned if I have to manually hack on the map to move the boundaries and it causes light to be wrong. 01:57 MTDiscord In a way, that might really be indicative of one of the most annoying "issue themes" I routinely run into: MT is designed to encourage people to do things on an "event-driven" basis, but then there are too many ways that events can be lost, leaving the world in an inconsistent state. 01:58 MTDiscord The only reliable workaround I've found for that is using globalsteps and ABMs to do background rechecks so that things can at least be eventually consistent. 01:59 erlehmann > I run a mod that does background lighting recalcs all the time 01:59 erlehmann enjoy your lag machines i guess 02:00 MTDiscord The only lag machine I've got so far is the way the engine processes ABMs 02:00 MTDiscord lighting calcs are weirdly cheap, actually 02:00 erlehmann i believe 2b2t once had light based lag machines. a big sheet of nodes, then holes in them that you open and close with redstone. 02:02 erlehmann savilli did you check out cheat clients? if not, try out waspsaliva. easy to get oob with it. 02:03 MTDiscord I've never seen one in the wild but actually just during this past day I removed the ability to toggle lights at 12Hz, now limited to 1 pulse every 2s 02:04 erlehmann i have accidentally made lag machines 02:04 erlehmann there is also the “remove any block if you can lag the server enough” thing, which i have not fully understood 02:05 erlehmann but i believe it may be similar difficult in timing to my “i can remove mapgen blocks before they are converted to actual blocks by the game” trick 02:06 erlehmann the problem is that if anything of that is possible, ppl have an incentive to lag the game 02:07 erlehmann “if you lag a server hard enough, players remove anything even if it is forbidden” is kinda a motivation for evil ppl to lag stuff 02:07 MTDiscord how do you define a lag machine btw? Like being able to get an arbitrarily high lag within a single step, or do you just mean bogging down in general? 02:07 erlehmann an ingame contraption that slows down server processing 02:08 erlehmann not anymore specific 02:08 MTDiscord ah, okay. I've never seen lag machines in nodecore, but there are probably lag areas at least. 02:09 erlehmann well sometimes ppl just figure out that you have to put in a lot of nodes of one type 02:09 erlehmann like 02:09 MTDiscord At least it's possible to get the server step time up from 0.05 to about 0.25, if you play in one area and develop it long enough. I think a lot of that is due to ABM shittiness but I haven't been able to dig out exactly how to fix it. 02:09 erlehmann take a node that makes entities or particle effects 02:09 erlehmann if you want to see shitty abms, go to jungle in mcl2/mcl5/mcla 02:10 erlehmann the vine growing abm is abysmal 02:10 MTDiscord In my case the problem isn't so much the abms being bad so much as that there are just a ton of them because pretty much everything in the game evolves over time in node form 02:11 MTDiscord I guess grass growing and leaf decay ones are probably pretty bad across most games, but I've probably got the worst possible cases 02:22 erlehmann Warr1024 why are yours so bad? 02:46 MTDiscord I dunno, but one thing I've discovered is that neighbors = { ... } is pretty painful, can increase an ABM's cost like 7x. 02:56 erlehmann i thought it was supposed to make it cheaper lol 03:38 MTDiscord I think it's probably cheaper to do the neighbor check in C++ than it is to fire on every node and then do the check by hand in Lua. Only I'm not 100% sure about that, especially assuming LuaJIT, i.e. if the number of neighbors is small and you're very likely to have a match. 04:03 erlehmann Warr1024 as always, benchmark it 05:00 ghoti Is there a way to remove a registered recipe that a mod has added? Sort of like I can `minetest.unregister_item()` in my own mod to remove other stuff, but I only want to take out the recipe and crafting guide entry. 05:07 MTDiscord if just crafting guide add not_in_creative_inventory = 1 in groups 05:07 MTDiscord otherwise minetest.clear_craft 05:12 ghoti Thanks. 07:43 erlehmann haha 07:43 erlehmann i have found multiple crashes that occur because 31000 is too close to where users can be 07:44 erlehmann figure this out for yourself lol 07:45 definitelya Hi erle 07:45 erlehmann hi 07:46 definitelya Even though you like to play in environments that keep an adversarial stance, there's no need to antagonize the core devs... 07:46 definitelya I understand it's frustrating for you, but you either apply to become core dev eventually, or leave them be a bit, you feel me? 07:46 erlehmann i said “if you do not fix the signed integer overflow, bugs will happen”, i am just exploring the new bug space between 31000 and 32767 or so 07:47 erlehmann look i want a game that does not crash 07:47 definitelya Yes I just look out for contributors that's all... 07:47 definitelya like you 07:47 erlehmann if i can find crashes, so can ppl who are way more annoying than i am 07:47 definitelya No need to be silenced forever if you have things to contribute. 07:49 erlehmann definitelya look i decided to only reporting boundary bugs anymore if i have a working fix for them. 07:50 definitelya ok good idea 07:50 erlehmann i mean in this case i may still decide to report it anyway 07:50 erlehmann because it is deliciously ironic 07:51 erlehmann then again i have reported https://github.com/minetest/minetest/issues/11828 already 07:51 erlehmann but that's not a crash 07:51 definitelya Careful with being too ironic on a serious project though. 07:53 erlehmann ok how about i report it without telling how to trigger it 07:53 erlehmann i think that's a good idea to make ppl fix the actual problem 07:54 definitelya dunno sorry, I hope you see eye to eye I guess. 07:54 erlehmann wdym 07:55 definitelya I'm no core dev ahah. 07:55 definitelya or dev 07:55 erlehmann fine, i make a bug report! 09:04 erlehmann definitelya here! https://github.com/minetest/minetest/issues/11835 09:23 definitelya ok 13:34 MinetestBot 02[git] 04richyliu -> 03minetest/minetest: Fix wireshark packet dissector wrong coordinates (#11826) 137a043b3 https://git.io/JMFeF (152021-12-05T13:34:40Z) 13:42 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Fix various code & correctness issues (#11815) 13ff934d5 https://git.io/JMFfc (152021-12-05T13:40:30Z) 15:32 Swift110-mobile oh someone posted the podcast before me. cool Yeah I listened to it and liked the honest comments that came from it 21:12 erlehmann can we talk about https://github.com/minetest/minetest/issues/11839 please? 21:12 erlehmann this is serious 21:13 erlehmann if any admin has this condition in their logs i'd be interested 21:14 MTDiscord I mean... default configured minetest also logs every single node change made by players to debug.txt iirc 21:15 erlehmann but does it complain >18000 times about every single thing? 21:15 erlehmann the disk filling thing is not the main problem 21:15 erlehmann > More seriously, the server being occupied with logging stuff seems to lag it so hard that in minetest_game sand does not even fall down anymore and the map generator seems to stop working (though that may have been due to the disk filling up). 21:16 MTDiscord yikes, that sounds way worse 21:16 erlehmann well, not a security issue, right? ;) 21:16 erlehmann juuuuuut a denial of service 21:17 erlehmann ironically, i would not have been able to easily trigger this if entities were legal at that position 21:18 erlehmann my advice (that will probabl be disregarded) is to let the entity be there, if it's too far out it won't be saved in a mapblock anyway (bc you don't have a mapblock) 21:19 erlehmann for the case of x>31000.0 unfortunately it is entirely possible to have a mapblock there 21:20 erlehmann as i said before: the zone in which stuff stops working should ideally be *far* away from the zone where mapgen stops working 21:20 erlehmann otherwise you have a new funny boundary that is worse than the old 21:20 erlehmann (and players can get close to it and do stupid shit) 21:31 erlehmann celeron55 https://github.com/minetest/minetest/issues/11837#issuecomment-986303933 23:08 MTDiscord erlehmann: according to google translate it roughly says "it's working fine now" - looks like a local megacommit a decade ago to me 23:10 erlehmann oh 23:10 erlehmann the question is what celeron55 wanted to achieve 23:10 erlehmann if you tear down a fence, it is good to know why it was built (even if you disagree) 23:17 celeron55 what 23:18 celeron55 i don't see a 2 second delay in commit c707e00 23:19 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Fix get_bone_position() on unset bones modifying their position 13d9d2193 https://git.io/JMbu5 (152021-12-05T23:06:49Z) 23:31 erlehmann celeron55 do: git show c707e00 |grep 'counter >= 2.0' -C8 23:31 erlehmann is counter >= 2.0 not 2 seconds? 23:37 celeron55 well it's obviously a workaround to some condition in the threading system that happened and i couldn't figure out why 23:38 celeron55 in that commit emergethread is triggered elsewhere without any delay 23:38 celeron55 as you should have noticed already 23:38 celeron55 which seems to be the way it's designed to work but not always does 23:40 erlehmann celeron55 i see. have you ever compiled minetest with thread sanitizer or similar? 23:40 celeron55 that part doesn't seem to exist in current master 23:40 erlehmann what part? 23:40 celeron55 the part where emergethread would be triggered without delay 23:40 erlehmann ah 23:41 celeron55 RemoteClient::GetNextBlocks 23:41 celeron55 that's where it was then 23:41 celeron55 i might be missing something though 23:42 celeron55 what's currently done is emerge->enqueueBlockEmerge() is called, and that one calls thread->signal() 23:43 celeron55 which probably should do the same thing as what server->m_emergethread.trigger() did back then 23:43 erlehmann btw, i think it is unwise to put a lot of small bugfixes in a single commit like here: https://github.com/minetest/minetest/pull/11815/files – there is no description for each change and if even one of them turns out to be wrong you have no way to just revert the commit cleanly 23:44 erlehmann celeron55 i have no idea how threading is supposed to work, i almost always write forkbombs when i deal with more than one strand of execution :D 23:44 celeron55 thread->signal() probably doesn't work when the thread is dead for some reason and the intention currently seems to be that the thread would never die 23:44 celeron55 but for some reason the thread ends 23:44 celeron55 and then nobody other than the ancient workaround can create it again 23:44 erlehmann that sounds unfortunate 23:46 celeron55 someone needs to decide whether it should be allowed to end or not, and modify the calling code accordingly 23:46 celeron55 or the thread 23:46 erlehmann celeron55, query 23:58 MTDiscord the ancient workaround probably had such an intention, but wouldn't follow up on it as a flag is set after the first call (as I have outlaid in the issue)