Time Nick Message 07:50 Alias Yay, it crashed again, this time with gdb attached. But what does it mean? That's what I caught: 07:51 Alias mientestserver /path/to/minetest/src/inventorymanager.cpp:304: virtual void IMoveAction::apply(InventoryManager*, ServerActiveObject*, IGameDef*): Assertion `move_count <= count' failed. 08:13 MTDiscord Perhaps a cheater? 08:14 MTDiscord Or probably a bug... 08:16 MTDiscord Hmm, I could imagine this happening when it tries to add a to a stack which has more items than it's allowed to have... 08:17 MTDiscord There's two places where move_count is set to something possibly nonzero: 08:18 MTDiscord move_count = src_item.count - restitem.count; <- will wrap and yield crazy results if restitem > src_item 08:18 MTDiscord move_count = list_from->moveItem(from_i, list_to, to_i, count, allow_swap, &did_swap); 08:21 MTDiscord I could see that producing weird results if allow_swap was set to true, but it isn't if it's a move_somewhere. 08:22 Alias The user claimed all he did was take some compressed cobble from a chest. He said he used shift+click, so possible listring involved 08:26 MTDiscord It definitely was a move_somewhere, I'm sure about that. 08:30 Alias Yes, there's a move event in the log. I asked the player to recreate it, but it didn't crash 08:31 MTDiscord Did they recreate everything exactly? 08:32 MTDiscord Did they have stacks with 99+ compressed cobble? 08:37 MTDiscord NVM, it should handle 99+ stacks correctly. 08:39 Alias Right before the crash message there is a move event logged, but the player says he didn't receive the item. There are only max 99 stacks in the chest (and - hopefully - on the server 08:41 MTDiscord Please provide the log message 08:42 Alias https://pastebin.com/r3n497GS 08:43 Alias I'm not sure if *all* of those messages are related to the incident, but they are close 08:49 sfan5 which version is this btw? 5.4? 08:50 Alias 5.4.1 debug build 08:51 Alias I attached gdb with the command you gave me, but failed to find where exactly it writes the dump to 08:56 sfan5 the assertion message already provides the exact place it failed so don't worry about that 11:08 Alias Now the server crashed with yet another different error message. I'll put it up here: https://pastebin.com/5QXqN2sZ 11:09 Alias Gist: PostgreSQL database error: ERROR: duplicate key value violates unique constraint "auth_name_key" 11:10 erlehmann luatic the only time i have seen cheaters crash servers accidentally was if their client crashed at the right moment and minetest couldn't handle a client just being gone lol 11:18 Alias We've now seen in the past 3 days: "A fatal error occurred: LUA PANIC: unprotected error in call to Lua API (bad argument #4 to '?' (userdata expected, got nil))" and "Assertion `move_count <= count' failed." and 'duplicate key value violates unique constraint "auth_name_key"' and surely one or another I even forgot by now. 11:18 ShadowBot https://github.com/minetest/minetest/issues/4 -- cppcheck warnings 13:40 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Mention colors.txt generation in README 130198897 https://git.io/JurSB (152021-09-11T13:40:34Z) 14:53 sfan5 manjaro.org prominently links to that "shells" company run by Andrew Lee whose name everyone should have heard by now 14:53 sfan5 now that is interesting 14:53 sfan5 they also don't have a proper package search which is what I was actually looking for 14:55 celeron55 if it's a ssponsorship deal, i wonder what other projects are targeted 14:55 celeron55 -s 14:56 celeron55 gotta be some other minor distro that would have taken it too 15:10 erlehmann does anyone have experience with this? https://github.com/Dumpster-Studios/cheat_detection 15:17 MTDiscord @Переполнение стека 15:22 MTDiscord I see, someone's curious about my anti-cheat 15:24 MTDiscord also i'm working on rewriting it, since that is a prototype that can actually track dirty clients from doing most things like: Killaura, force fly, force fast, force noclip, jesus walk, and abnormal node breaking 15:27 MTDiscord the full version of this prototype after code cleanup and arrangements will be called hugin_&_munin 15:27 celeron55 was reading this and noticed something doesn't seem right here 8) https://github.com/Dumpster-Studios/cheat_detection/blob/main/init.lua#L248 15:27 MTDiscord you'll replace that "&" by "and" though I hope 15:28 MTDiscord you'll also definitely need some collisionboxes, so you might want to have a look at :modlib: https://github.com/appgurueu/modlib/blob/master/minetest/collisionboxes.lua 15:32 MTDiscord I've been aware of that c55, lol 15:32 MTDiscord this repo needs a cleanup 15:34 MTDiscord https://notabug.org/Genshin/cheat_detection/commit/090fbe148b0a5830da0878599a6de4aab5d44ee9 this one shouldn't have that error 15:34 erlehmann Genshin how would it figure out if someone is legit flying using elytra or glider? 15:35 MTDiscord Yeah, does it take player jump / gravity / velocity / attachment into account? 15:36 erlehmann or what if someone teleports using a piston teleporter line 15:36 erlehmann those can move you across half the world 15:36 erlehmann in no time 15:36 MTDiscord Does that use set_pos? 15:36 MTDiscord Or add_[player]_velocity 15:36 erlehmann no idea look at mesecons how pistons push players 15:37 MTDiscord it can detect if a player is on a object, i'll also have to make it check whether or not it's attached to a object 15:37 erlehmann but several ppl (including me) have abused pistons for teleport purposes 15:37 erlehmann in mineclonia we actually have a test world that includes a functional minecart teleporter (it teleports a minecart, regardless of if a player is in it) 15:38 MTDiscord regular teleportation is fine, can the current dragon fire client can do force teleportation? 15:38 erlehmann by exploiting the timing behaviour of pistons 15:38 MTDiscord that's fine aswell, pistons are nodes 15:39 erlehmann you can easily replicate this by having something that triggers in the following way: player gets pushed by piston off a pressure plate onto another, which triggers a very fast retraction and pushing again 15:40 erlehmann usually ppl who want that have to turn off anticheat because anticheat is extremely stupid 15:40 erlehmann Genshin use waspaliva, it better than dragonfire 15:41 MTDiscord default anticheat usually resets a player's position if their velocity is higher than it's supposed maximum 15:42 MTDiscord also it's kinda faulty since it can't track very well when lag is happening 15:43 MTDiscord already tried waspaliva and dragonfire client while working on this cheat detection mod 15:56 erlehmann Genshin the commands are .teleport and .warp for teleportation 15:57 erlehmann Genshin default anticheat even breaks gameplay when you get on a bouncy node from high enough (fall speed is unlimited, upwards speed is limited) 16:21 hendursaga Is Loria the only MT mod/subgame written in Fennel, or are there more? 16:23 MTDiscord Worst game or something was i thought 16:24 hendursaga Also I assume I don't need to compile MT from source to get it working? Fennel just transpiles to Lua and you use that? 16:26 Calinou if the language compiles to LuaJIT-compatible Lua, then a vanila Minetest build can run it 16:26 Calinou it would be interesting to see if TypeScriptToLua can be used too 16:26 Calinou https://github.com/TypeScriptToLua/TypeScriptToLua 16:26 sfan5 that looks very interesting 16:26 Calinou although you'd need to generate typing information for the Minetest modding API to get more safety 16:27 hendursaga Jonathon: you mean this? it appears it uses moonscript, which is different, so.. https://gitlab.com/worstconcept/worstblockgame 16:27 Calinou the main downside right now is that you need to install Node.js + npm to run the TS2Lua compiler, hopefully there will be a single-binary distribution in the future (e.g. using `pkg`) 16:27 Calinou or even using Deno, which is smaller but will require a lot of internal changes 16:30 MTDiscord Hendursaga, ah, sorry. I remembered it didnt use lua but not exactly what 16:32 hendursaga MoonScript does transpile to Lua but yeah 17:23 Desour I hate it so much that github uses tab width 2 for diffs, and good width 4 when normally looking at files or when expanding diffs 17:26 specing I guess you do not hate it enough to stop using that proprietary closed-source platform 17:30 Desour yep. I don't hate this problem enough to stop doing anything with minetest, or any other project on github 17:33 sfan5 Desour: the MutexAutoLock in the method should have been a clue that returning references doesn't work but I didn't see that either 17:34 Desour I haven't looked at the whole function 17:34 sfan5 https://0x0.st/-x8E.png just this one I mean 17:35 hendursaga Desour: you've used SourceHut yet? 17:36 Desour oh, I've looked at neither of the functions as a whole x) 17:36 sfan5 heh 19:07 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Make sure relevant std::stringstreams are set to binary 1375bf9b7 https://git.io/JuKeB (152021-09-11T19:06:57Z) 21:25 Alias Yay, another server crash, this time nicely captured. https://pastebin.com/34AT4z3B 21:28 sfan5 that that happened after "ACTION[Main]: Server: Shutting down" that unfortunately looks like not the actual issue 21:28 sfan5 (still shouldn't crash of course) 21:28 sfan5 if that* 21:28 Alias Ok, I got the log before that, too. What should I look for? 21:29 Alias Last recorded action was someone crafting 99 ropes :D 21:31 sfan5 anything that looks like a reason the server would shut down 21:31 sfan5 though I don't really get how the situation in the crash log can happen at all... 21:31 erlehmann sfan5, what do you mean? 21:31 erlehmann why should it not happen? 21:31 Alias What bugs me most is that all the issues happened at different parts of MT 21:33 Alias How far into the past should I look for crash reasons? I can only see crafting and building actions, and the occasional active block modifier that took too long 21:33 sfan5 less than 1 minute 21:33 sfan5 erlehmann: if the server is shutting down the serverthread has no business still running 21:34 erlehmann well minetest is not exactly threadsafe or is it? 21:35 sfan5 what is that supposed to mean? 21:35 erlehmann that the different threads interact with the shared state perfectly without bugs 21:36 erlehmann i think i have had situations at shut down that might have been similar, i.e. threads still running though they shoud not 21:36 erlehmann i did not get such a nice trace though 21:36 sfan5 Minetest is not "perfect" and "without bugs", no 21:36 erlehmann i mean specifically in regard to threads 21:37 erlehmann brb checking something 21:37 Alias The last 2 minutes before the crash are around 430 lines. At least _I_ cannot see anything strange in there. 21:38 Alias Since those lines contain player names and positions, I'd rather send it in private, if you want to take a look? 21:38 sfan5 sure 21:41 erlehmann ok i'm looking at the thread stuff now to see if i can find thread weirdness at shutdown without having a huge server with many users. don't count on it, i have no idea what i'm doing! 21:43 Alias erlehmann: If it helps, I'd forward those two minute log to you, too. I only can't have it in general public 21:43 erlehmann no do not 21:43 erlehmann i'm just trying to see if there is a general issue that you noticed and everyone else did not 21:44 erlehmann do not expect me to be of as much help as sfan5, i have very little familiarity with the engine 21:44 erlehmann (i am working on that) 23:16 MTDiscord sfan5, earlier in dev irc, you said that dynamic media would be useful for mineclone, however once its used its pushed to all clients that join anyways, so what is the difference for the clients after its used once? 23:17 sfan5 you must have missed the API improvements merged a few days ago 23:17 MTDiscord i noticed 23:18 sfan5 regardless of that though it would still move the loading overhead to the first time it was used 23:18 MTDiscord yes i can send it per player specifically, however it needs to play at a pos, so unless you want to patrol with a globalstep, sending to all players would be required 23:19 MTDiscord >regardless of that though it would still move the loading overhead to the first time it was used ah ok, thats what i thought 23:19 MTDiscord thank you 23:20 sfan5 it'd mostly make a relevant different for android singleplayer loading times 23:20 sfan5 where "all players" is just one player anyway 23:20 MTDiscord yeah, as long as they join before its used is the only time it makes a difference 23:21 erlehmann i don't get it where would it be useful for mineclone 23:21 MTDiscord >jukeboxes 23:21 erlehmann oh lol 23:21 MTDiscord also, please dont start a mineclone rant 23:21 erlehmann nah 23:22 erlehmann you want laggy jukeboxes? bc to me it seems like that way you get laggy jukeboxes 23:22 MTDiscord i mean, if people never use them, then thats a benifit all the time, but the first time someone uses it, its pointless 23:22 MTDiscord *benefit 23:23 MTDiscord waiting like a second or two to start music is a big deal? 23:23 erlehmann i see the potential benefit here though, the jukebox tracks are 15M 23:23 erlehmann and jukeboxes that had many more tracks would ofc benefit 23:23 Pexin w wut.. 23:24 MTDiscord saves loading till its used, after that, not point 23:24 MTDiscord *no 23:24 Pexin 15M seems excessive 23:24 erlehmann Pexin, all tracks together are 15M 23:24 Pexin ah 23:24 Pexin that's much better 23:24 erlehmann that is 15M of media that is very rarely used 23:25 MTDiscord seems dynamic media v1 could be used for this no problem 23:25 Pexin maybe someone will make a newer jukebox with more than 9 tracks that can dynamically pull from a web source 23:26 MTDiscord pexin: sure, but once someone plays all those tracks, all players afterwords will have to load them 23:26 erlehmann the thing is, if you make it load at playtime, it can stall the game you are playing pretty effectively 23:26 erlehmann i mean filling a mapblock with 4MB of meta already does 23:27 Pexin not if the jukebox only stores a uri 23:28 erlehmann Pexin, mcl2 actually introduced a jukebox API to register arbitrary tracks, it is a bit buggy (i fixed that when i ported it to mineclonia), but you can basically make a mod that registers an arbitrary number of music discs now. 23:28 MTDiscord pexin: read the manual on how dynamic media works 23:29 MTDiscord >Adds the file to the media sent to clients by the server on startup 23:29 MTDiscord sending it to specific players would not work in this case as your playing it to all player in a pos area, thus all players need to have the audio 23:29 Pexin isn't that what's currently being discussed for fixing? 23:30 Pexin ohhh 23:30 MTDiscord with dynamic media v2 you can send to specific players and not add to all players after words, but in this case you can not do so 23:31 MTDiscord i case of per player and not added to global media loading what be only sending per player ambience for areas like the nether 23:31 MTDiscord *a case 23:31 erlehmann Jonathon, i believe you might be mistaken about mcl jukeboxes, they only play sound to players that inserted the disc 23:31 erlehmann not all players in the area 23:31 Pexin I should refrain from joining a conversation midway while I'm half paying attention to listening to my own playlist haha 23:31 MTDiscord oh really? i looked up how minecraft ones work 23:31 MTDiscord i assumed mineclone did similar 23:32 erlehmann look at the code. i consider it unfortunate that it works that way. 23:32 erlehmann bc i already witnessed a “hey do you hear my cool music disk?” – “not at all” event 23:32 MTDiscord https://github.com/minetest-mods/jukebox/blob/master/init.lua#L74 heh, the minetest-mods one does it "correctly" 23:37 erlehmann just tell someone from the mcl2 or mcl5 team that it is not EXACTLY LIKE MINECRAFT and i bet they will appreciate that 23:38 MTDiscord minetest bot needs a command to slap erlehmann every time he complains about mineclone 23:38 Pexin I recall searching the MT code to see if it can handle midi / can be added easily, but I don't remember what I found. 23:39 MTDiscord isnt there some issue somewhere? 23:39 MTDiscord 50 50 chance it got paramated 23:40 erlehmann ha we can just verb nouns? 23:40 erlehmann 100% chance if midi was ever supported it got hecktested recently hehe 23:40 MTDiscord go play jordach's drinking game 23:41 erlehmann oh what is that 23:41 MTDiscord then youll understand why thats a paramated is a thing 23:41 erlehmann is it on contentdb? 23:41 MTDiscord its in the forum somewhere 23:41 erlehmann ok i look lol 23:42 erlehmann found it https://forum.minetest.net/viewtopic.php?t=25514 23:43 MTDiscord yeah, that 23:44 MTDiscord anyways, back to midi https://github.com/minetest/minetest/issues/3878 23:44 MTDiscord seems to be main thing 23:45 Pexin huh 23:45 erlehmann whatever ppl say of paramat, requesting the ability of mods to figure out if the client is running linux is just insanely stupid https://github.com/minetest/minetest/issues/10393#issuecomment-692473048 23:45 erlehmann that was shot down legitimately 100% 23:46 MTDiscord https://github.com/minetest/minetest/issues/11603 LOL 23:46 erlehmann i really don't get why ppl can't get feature testing 23:47 erlehmann it's not like protocol version numbers mean anything 23:47 erlehmann if related to features 23:48 MTDiscord i want the strict protocol setting to actually work rather than kicking people based on fricking formspec versions 23:48 erlehmann Warr1024 would you also want http to increase protocol version when ever a new nginx or apache comes out 23:48 erlehmann Jonathon define “actually work” pls 23:48 MTDiscord 5.2 vs 5.3 comparison was a dumpster fire 23:49 erlehmann > Doing this is supposed to provide modders with the ability to accurately detect whether features they care about work on a particular client, including detecting bugs or quirks that may be unknown to core devs at the time of release. 23:49 erlehmann another thing for cheat clients to handle 23:49 erlehmann “send fake user agent” 23:50 erlehmann then the *real* protocol incompatibility would need to be handled differently even 23:50 erlehmann amazing 23:50 sfan5 protocol versions are not user agents 23:50 sfan5 if your client claims it only supports 5.3 it will only get 5.3 features 23:50 MTDiscord if a client wants to lie about what it supports, then its there fault for crashing and burning or having sub optimal experience 23:50 sfan5 and a disconnect if the server has enabled strict checking 23:52 erlehmann sfan5, my point is that overloading the meaning of protocol version beyond “this is strictly speaking incompatible on the wire” would make protocol versions user agents 23:52 erlehmann in practice 23:52 erlehmann in the same way that sending window size or platform would make it worse 23:52 sfan5 well what is "strictly incompatible" 23:53 sfan5 if the server sends extra data that older clients ignore is that "strictly incompatible"? 23:53 sfan5 because that's what often happens until now, you could argue that the protocol version should be bumped because of that and it would be reasonable 23:54 erlehmann i'd say “the grammar of the new version is not even close to containing the old version grammar entirely” 23:54 erlehmann html is upwards compatible like that, new elements get added all the time 23:54 erlehmann http too, new headers 23:55 erlehmann email, xmpp, tls – all the really successful application protocols used by more than a handful of programs/libraries stopped having “protocol versions” at some point 23:56 erlehmann and used exactly that kind of extension mechanism 23:57 Pexin x-client-eula: By accepting this http fetch, the administration of the server (hereafter known as THE SERVER) shall agree that the user of the client (hereafter known as THE CLIENT) has been granted the right to execute arbitrary digital instructions on the server without warrantee etc etc etc 23:57 erlehmann (extra data that “old” clients ignore) 23:57 erlehmann Pexin, are you working on client-sent server mods lol 23:58 Pexin I wish... 23:58 erlehmann Pexin maybe query me if you think you might be able to turn a use after free or dereferencing a null pointer into code execution 23:59 erlehmann but not tonight