Minetest logo

IRC log for #minetest-dev, 2021-11-13

| Channels | #minetest-dev index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
01:56 kilbith joined #minetest-dev
02:18 MTDiscord joined #minetest-dev
03:29 queria joined #minetest-dev
03:33 queria joined #minetest-dev
05:00 MTDiscord joined #minetest-dev
05:16 olliy joined #minetest-dev
06:30 wsor4035 joined #minetest-dev
08:38 tekakutli joined #minetest-dev
09:40 Fixer joined #minetest-dev
09:40 kilbith joined #minetest-dev
11:13 Wuzzy joined #minetest-dev
11:17 proller joined #minetest-dev
11:24 calcul0n__ joined #minetest-dev
12:07 iliekprogrammar[ joined #minetest-dev
12:27 YuGiOhJCJ joined #minetest-dev
12:51 tekakutli joined #minetest-dev
13:26 Fleckenstein joined #minetest-dev
14:36 appguru joined #minetest-dev
14:44 kilbith joined #minetest-dev
15:01 kilbith this is an interesting lib for MT: https://github.com/yuri/lua-colors/blob/master/lua/colors.lua
15:01 kilbith and it is MIT licensed.
15:19 MTDiscord <luatic> meh
15:45 fluxionary joined #minetest-dev
15:52 tekakutli joined #minetest-dev
15:54 Extex joined #minetest-dev
16:11 kilbith joined #minetest-dev
16:15 EliasFleckenstei joined #minetest-dev
16:16 Fleckenstein joined #minetest-dev
17:17 erlehmann rubenwardy, is it possible to push updates to minetest game via contentdb?
17:17 rubenwardy If they install it via ContentDB, yes
17:17 rubenwardy Otherwise no
17:17 erlehmann rubenwardy, i am asking because of https://github.com/minetest/minetest_game/blob/5875820542c739ff223a8a6ef8a3e698685b6405/mods/fire/init.lua#L170
17:18 erlehmann you see, the minetest.find_nodes_in_area() call there is exploitable by griefers
17:18 erlehmann they can crash or hang the server
17:18 erlehmann i am working on a lua workaround
17:19 erlehmann but the question is how to get the lua wrapper for minetest.find_nodes_in_area() to the people
17:19 erlehmann rubenwardy, so you'd say it makes sense to put the minetest.find_nodes_in_area() wrapper in minetest_game once it is finished?
17:21 erlehmann btw, it seems from a very lazy review, that there are a bunch of other bugs lurking in the space between MAX_MAPGEN_LIMIT and the limits of s16, that were never found
17:23 erlehmann therefore, in the interest of stability, i want to urge everyone who works on stuff that takes coordinates as s16 or whatever to make sure those function work up to the limits of the underlying data type, not to the limits of “what makes sense in normal usage”
17:23 erlehmann griefers do not care about normal usage
17:24 erlehmann they just want to destroy & crash/hang servers
17:26 MTDiscord <luatic> In that spirit, you probably shouldn't output warnings
17:33 rubenwardy MTG is released at the same time as the engine
17:33 rubenwardy Makes sense to just fix the engine
17:35 erlehmann rubenwardy, ok let me say it that way: at the moment cora & me publish our reproduction on how to do it, everyone can see in our bug tracker how to crash every current minetest server that uses mcl2, mcl5 or minetest game, except the ones running mineclonia or games that do not copy code from minetest game
17:36 erlehmann and ofc a bug fix needs to have instructions how to verify that it works
17:36 erlehmann so not publishing it is not an option
17:45 sfan5 you seem to be missing a crucial step, how do people get out of bounds?
17:45 erlehmann sfan5 minetest for good reason does not limit falling speed
17:46 erlehmann (don't limit it now that i have said it, you'll break things)
17:46 sfan5 oh yea I forgot
17:46 erlehmann i.e. it is trivial to just fall out of the world
17:46 erlehmann and if you hit exactly the right cordinates, shit happens
17:47 erlehmann the thing is, i think the only way to prevent shit happening is to define one boundary and make everything in it well-behaved and everything out of it illegal. naturally, that would be s16.
17:48 erlehmann all other ways might work, but create additional boundaries (i.e. mod code needs to check more than if a value is out of s16)
17:48 erlehmann and the more boundaries you have, the more trouble
17:50 erlehmann i mean, the thing with player positions being float vectors that then crash the server if you give them to a lua function is an example of a boundary where one part of the code checks it (and crashes), but the other one does not
17:50 erlehmann oh, also ppl are already abusing “teleport player to 0,0,0 if coordinates are illegal” bugfixes to travel far on servers
17:51 erlehmann just in case anyone thinks that is a solution
17:52 rubenwardy We have patch releases for thid
17:52 erlehmann thid?
17:52 erlehmann sfan5, other ways to get out of bounds usually involve attachment/unattachment shenanigans, flinging a player with high speed in some direction
17:52 erlehmann etc. pp.
17:53 erlehmann there are a lot of issues and i think papering over each of those is a lot more work than just defining one boundary and then run unit tests to ensure it is well behaved
17:54 erlehmann there are only about 65536³ = 281474976710656 possible v3s16, that means it is possible to check them all in unit tests
17:54 sfan5 before I leave for the evening I just want to point out that we have never done a patch release for bugs like this
17:55 erlehmann well i am thinking long term
17:55 erlehmann basically, i want minetest servers to not crash, even with the stupidest possible mod code
17:56 erlehmann and fixing all the integer overflows would go a long way towards it
17:56 erlehmann and making sure that all coordinate conversions roundtrip
17:57 erlehmann i have abandoned my plan of client-sent server mods btw
17:57 erlehmann clearly fixing the holes is much more important
17:57 erlehmann bc the bad ppl are stupid, but not that stupid
18:22 asdflkj_sh joined #minetest-dev
19:00 erlehmann joined #minetest-dev
19:57 Flitzpiepe joined #minetest-dev
19:58 Flitzpiepe_ joined #minetest-dev
21:53 MTDiscord <luatic> "basically, i want minetest servers to not crash, even with the stupidest possible mod code" - a logging error handler would allow for this, but I think it's a bad idea; erroring is preferrable over working with an inconsistent state
21:53 erlehmann luatic, what is an inconsistent state?
21:54 MTDiscord <luatic> Consider a = 1 + trueas "most stupid mod code". What should the value of a be afterwards, if you're not going to error?
21:54 erlehmann oh no, i mean different stuff
21:54 MTDiscord <luatic> "there are only about 65536³ = 281474976710656 possible v3s16, that means it is possible to check them all in unit tests" - possible but not reasonable; it would take way too long - only edge cases should be checked, fuzzing should be used
21:55 erlehmann you only need to test the boundaries, but come on, computers are fast.
21:55 MTDiscord <luatic> Not that fast
21:55 MTDiscord <luatic> My rule of thumb: It's fine as long as it's roughly about 10^9 (10^12 tops)
21:56 erlehmann regarding stupid mod code: for example, it is known that the lua mapgen is very racy. essentially, you can not be sure that stuff you do in lua mapgen is not deleted by a process that kay27 calls “mapgen griefing”.
21:56 erlehmann there exist a lot of lua workarounds that essentially a) place stuff b) try to figure out if it actually got placed
21:57 erlehmann so they try it again
21:58 erlehmann this is of course a bit stupid, but what should they do? i am of the impression almost everyone thinks thread safety and signed integer overflow are not *that* of a big deal (until they cause crashes)
21:59 erlehmann i have over the time seen a lot of mapgen weirdness (up to “a stone cube hangs in the sky”) that can be explained very well by the mapgen being unreliable
22:00 erlehmann i am not saying the way mod authors deal with it is nice, but the code is out there
22:01 erlehmann tbh the first time kay27 brought this up i thought he was seeing ghosts
22:01 erlehmann because his workarounds are *really* crazy
22:09 Extex Came up with an idea yesterday, add an optional wherein to .register_decoration
22:10 Extex And by doing that you can say for example: in stone and on air
22:10 Extex To make roof decorations
22:20 erlehmann OH LOL
22:23 erlehmann sfan5 i just found out that for a crash-related test case i might need an area that is guaranteed to *NEVER* be touched by mapgen but other stuff should work. does such an area even exist? can i exclude mapgen from some mapblocks maybe using lua?
22:24 erlehmann “use singlenode and always create a new world” is a bit cumbersome (then the test case can not be run on existing worlds)
22:43 erlehmann nice, while writing my test case i found another boundary bug
23:40 proller joined #minetest-dev

| Channels | #minetest-dev index | Today | | Google Search | Plaintext