Time Nick Message 00:08 eugd anyone feel like giving a hand helping me squash my commits? 00:08 eugd if they know what's wrong 00:08 eugd https://github.com/minetest/minetest/pull/3199 01:55 waressearcher2 there are many choices in source code for database type, like: "Database_SQLite3,Database_LevelDB,Database_Redis", why are there so many choices and why the default one is "SQLite3" ? 02:08 nanepiwo &(99-21)/4 05:39 celeron55 waressearcher2: basically not because you need them, but because it's just something that people have found easy enough to add in 05:40 celeron55 the default is sqlite3 because it's the most portable one and it's always been the default 05:41 celeron55 (well, since some version before 0.3.0, but anyway) 07:22 est31 one thing to improve about the sqlite backend would be to either use z indexes or split the coords up 07:22 est31 whatever performs better 14:30 est31 eugd, perhaps connect to the #git channel? people usually help there 14:32 eugd i don't need to have an actual change to push, do I? it isn't actually impossible to just rebase by itself? 14:34 est31 the moment the commit hash changes you have sth to push 14:34 est31 if its just a typo fix of your commit message doesnt matter 14:38 eugd no matter what i do it just returns 'everything up to date' 14:39 est31 eugd, do the following 14:39 est31 git checkout branchname 14:39 eugd done 14:39 est31 git rebase -i master 14:39 est31 then do the rebase 14:39 est31 then type git status and tell me what you have 14:41 eugd ok well when i go to do rebase -i master it has noop 14:41 eugd still go forward? 14:41 est31 no 14:41 est31 you have to squash the commits 14:41 est31 if you type that if opens an editor right= 14:41 est31 ? 14:41 eugd yes 14:42 eugd when i try to rebase master it only brings up latest commit 14:42 eugd should do HEAD~22? 14:42 eugd what i've been doing 14:42 est31 thats ok too 14:42 eugd and you're saying to rebase master, not the branch? 14:43 * Krock offers to do it for eugd but he won't learn anything this way 14:44 est31 no eugd if you type "git rebase -i specifier" then it rebases onto the specifier, not the specifier itself if its a branch 14:44 est31 so if you type git rebase -i branchname you rebase the current branch onto "branchname" 14:45 eugd trying to rebase 'master' at all gives no options 14:45 eugd literally 'noop' where the commits would be 14:45 est31 and if you type git rebase -i HEAD~22 then you rebase the current branch onto the commit 22 commits before HEAD. This means that nothing will change, if you dont edit the file 14:45 est31 eugd, what branch are you on 14:45 est31 what does git status say 14:46 eugd 'splitlimit' branch i created 14:46 eugd james@james-Vostro-1520:~/Desktop/minetest$ git status 14:46 eugd HEAD detached at refs/heads/splitlimit 14:46 eugd nothing to commit, working directory clean 14:46 eugd james@james-Vostro-1520:~/Desktop/minetest$ 14:46 est31 well, your pull request is from master 14:46 est31 so you have to do it now from your master branch 14:46 eugd yes i push to master to update pull request? 14:46 est31 do git checkout master 14:47 est31 then rebase onto HEAV~22 14:47 est31 or that works well as well 14:49 eugd james@james-Vostro-1520:~/Desktop/minetest$ git rebase -i HEAD~22 14:49 eugd [detached HEAD 64fef2a] Update map.cpp 14:49 eugd Author: EUGD 14:49 eugd 6 files changed, 79 insertions(+), 24 deletions(-) 14:49 eugd Successfully rebased and updated refs/heads/master. 14:49 eugd james@james-Vostro-1520:~/Desktop/minetest$ git status 14:49 eugd On branch master 14:49 eugd Your branch and 'origin/master' have diverged, 14:49 eugd and have 1 and 22 different commits each, respectively. 14:49 eugd (use "git pull" to merge the remote branch into yours) 14:49 eugd nothing to commit, working directory clean 14:49 eugd james@james-Vostro-1520:~/Desktop/minetest$ 14:50 est31 now it seems that you only have to push 14:50 est31 "git push -f" should suffice 14:52 eugd oh gdi 14:52 eugd wtf 14:52 eugd i swear to god i've done exactly this 14:52 eugd gah thanks 14:52 eugd lol 14:53 eugd i still don't understand what it was causing my original problem, then, because until yesterday i was working exclusively in master 14:54 eugd and doing exactly this, with no result (just returned 'Everything up-to-date') 14:54 eugd thanks so much est31 18:19 eugd1 i may have found another bug 18:19 eugd1 something to do with how settings are saved 18:22 eugd1 been testing with my thing and now map_generation_limit keeps resetting to 200 18:22 eugd1 which was a value i'd provided through minetest.conf, it's not in the code anywhere 18:22 eugd1 this is persisting through different worlds 18:36 eugd did my messages a few minutes ago go through? 18:37 eugd about settings bug? 18:37 Calinou thanks so much est31 18:37 Calinou this was your last message 18:37 eugd ok 18:37 eugd may have found another bug 18:37 eugd minetest.conf resetting 18:37 Calinou it never happened to me... 18:38 eugd no idea what's going on, but it's definitely happening 18:38 eugd like the game is loading an earlier version instead, and saving it over the (current) user-defined one 19:02 eugd it seems to be just map_generation_limit 19:02 eugd or atleast it is NOT map_generation_extent 19:02 eugd that is resetting 19:04 Krock minetest.conf resetting 19:04 Krock Does minetest have write access there? 19:05 eugd it would certainly seem to 19:05 eugd yes actually 19:05 eugd for sure 19:05 eugd it populates minetest.conf as user changes settings via gui menus 19:05 Krock This definitely doesn't happen with my ... some days old build. Crashes can discard changes 19:05 Krock also don't edit the file while Minetest is runnng 19:06 eugd i think that may be part of it but it's happening even with the file closed 19:15 eugd maybe i'm actually crashing every time i close the window? 19:38 eugd well i'm stuck now 19:39 eugd because of this inexplicable bug 20:09 eugd fixed it by completely deleting my .minetest folder 20:22 VanessaE so, 20:22 VanessaE thanks to inaction by the devs, it looks like my two oldest worlds are corrupted to the point that I have to reset the worlds. 20:22 VanessaE thanks. 20:23 VanessaE I really appreciate the headache. 20:29 Krock VanessaE, /deleteblocks ? 20:30 VanessaE useless. 20:40 kahrl i hadn't even heard of map corruption until now 20:40 kahrl issue #? 20:42 VanessaE I don't remember anymore 20:44 VanessaE as for resetting, I decided just fuck it. I shut the servers down. 20:45 Krock VanessaE, with your capitulation you shut down months of work 20:45 VanessaE years. 20:45 VanessaE I give up, krock. 20:46 Krock Oh c'mon, please. Aren't there any backups? 20:46 VanessaE there are. 20:46 VanessaE but backups are useless if the corruption is in all of them 20:46 Krock And editing the database isn't an opinion? 20:47 VanessaE I don't know enough about the backend (leveldb), let alone the map format, to safely do anything about it. 20:53 kahrl is it #2610 20:53 ShadowBot https://github.com/minetest/minetest/issues/2610 -- Invalid block data in database: unsupported NameIdMapping version 20:53 VanessaE that's one of them 20:55 VanessaE #1425 is part of it too 20:55 ShadowBot https://github.com/minetest/minetest/issues/1425 -- Deleting extraneous entities from a mapblock deletes PLAYERS also 20:55 VanessaE (specifically, where it is the entities are coming from) 20:56 kahrl wait... how does deleting player objects create entities? 20:56 VanessaE it doesn't. 20:56 VanessaE entities being created out of thin air does by way of the engine trying to delete them. 21:12 VanessaE I'm sorry to be such a bitch about it, kahrl. 21:13 VanessaE but I've been arguing for years now about how too much focus is on new features and not enough on fixing bugs and making sure servers can run well and users' creations aren't threatened 21:13 VanessaE and most of the time, I'm either ignored, or no one's online to discuss it. 21:14 kahrl most of the recent releases had a ton more bugfixes in their changelog than new features 21:14 kahrl (more so than older releases) 21:15 VanessaE maybe I'm not putting it the right way, I guess 21:16 VanessaE how many of those bug fixes are the result of some new "feature" that's been added, or are just stuff like code style or whatever? 21:19 kahrl what I'm wondering is: well, if this bug has been around pretty much forever, why is it threatening your map just now? 21:19 VanessaE it's not "just now" 21:19 VanessaE it's been a problem for a long time now 21:19 VanessaE if I had to guess, I'd say a year and a half 21:21 VanessaE I've just been tolerating the problems in hopes that someone can fix them. 21:24 waressearcher2 "I've just been tolerating the problems in hopes that someone can fix them", that is why statisticaly there more people witness the crime the less chances someone will call the police 21:25 VanessaE calling the police does no good if they don't answer the phone. 21:35 kahrl I can't speak for the other devs, but I generally find it impossible to fix issues like those mentioned because I can't even find a way to reproduce them 21:36 kahrl it would help a lot if users gave steps to reproduce the errors they report 21:36 VanessaE that's why I have had downloadable worlds available for a long time now, to help with that. 21:36 VanessaE but they're big files (multi-gigs), and that's a turn-off for some people I guess 21:37 kahrl Yeah. There's a reason most programming chats ask for *minimal* (non-)working examples 21:37 VanessaE I tried that too. 21:37 VanessaE literally. 21:38 VanessaE (as in a few-megs-in-size world generated using the "minimal" subgame, specifically to illustrate what happens when entities get outside the world bounds) 21:39 VanessaE (I even managed to get it to corrupt itself, entirely with normal in-game activities, and to start producing entities out of thin air) 21:44 eugd just curious, what are the entities it's producing? 21:46 VanessaE they're invisible, presumably unnamed and undefined as well, hence I call them 'ghost' objects. 21:47 VanessaE they only show up in the logs and in the amount of block load and mesh gen lag they create 21:48 kahrl oh, you mean those 21:48 kahrl yeah, I've seen that 21:49 kahrl I think it's not actually creating entities, but rather reading the number of entities from an uninitialized variable 21:51 kahrl (very easy to reproduce: start a fresh map on vanilla minetest_game, teleport to y = -30900, throw an item out the bottom of the world) 21:51 VanessaE (yep) 21:52 VanessaE there are two multiple issues there 21:52 VanessaE the entities should be deleted when the leave the bounds, 21:52 VanessaE the map block should not become corrupt (as in, world load error) 21:52 VanessaE the ghosts should not be created 21:52 VanessaE and it should not kill client fps when they multiply 21:53 kahrl as easy as it is to cause the "ghost" entities by the method I described, I've never actually managed to corrupt any mapblock with that 21:53 VanessaE plus in advanced cases, /clearobjects is not enough to fix the map. 21:53 VanessaE (/deleteblocks sufficient to stop the world load error, temporarily) 21:54 kahrl nor could I figure out the cause of the "ghost" entities, because when I run minetest in valgrind, the entities just sit there instead of dropping out of the world and causing the error 21:55 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/stats.html 21:56 VanessaE see that spike near "Wed 12:00" in the mem graph? 21:56 VanessaE and the three large > 10 GB sections to the right? 21:56 VanessaE those were caused by out-of-bounds entities on my Free-for-All map. 21:57 VanessaE (specifically, MOBs from Calinou's mod, looks like they spawned somewhere normal and wandered through a cave to the world edge) 21:59 waressearcher2 kahrl: "it would help a lot if users gave steps to reproduce the errors they report", it will not just help it is how this suppose to happen when reporting bugs 22:49 kahrl ok, I figured out what happened in rubenwardy's map 22:50 kahrl specifically the broken mapblock 0,-8,2 from this map: https://github.com/minetest/minetest/issues/2610#issuecomment-138242659 22:50 kahrl I deserialized the mapblock by hand with a hex editor 22:51 kahrl there were 97590 serialized static objects in there 22:51 kahrl but the field that says how many there are said 32054 22:51 kahrl (note how (u16)97590 == 32054) 22:53 kahrl so when minetest tries to deserialize this mapblock, at some point it deserializes a StaticObjectList containing 32054 objects 22:53 kahrl and after that it expects a NameIdMapping 22:53 kahrl but the actual data it receives is just more static objects 22:54 rubenwardy that sounds difficult to fix with backwards compatibility 22:55 kahrl yeah :/ 22:55 VanessaE that explains why /clearobjects can't fix it, either. 22:55 rubenwardy ~math c 97590/(16*16*16) 22:55 rubenwardy ~c math 97590/(16*16*16) 22:55 ShadowBot rubenwardy: math calc 22:55 rubenwardy ~math calc 97590/(16*16*16) 22:55 ShadowBot rubenwardy: 23.82568359375 22:55 rubenwardy that is a lot 22:56 kahrl well, it's easy to prevent new broken mapblock from being written 22:56 kahrl when serializing, check if the number of objects to write exceeds the range of u16 22:56 kahrl and if so, just don't write any objects (or only the first 65535, perhaps) 22:57 est31 it should definitely print a warning 22:57 kahrl yes 23:07 kahrl it *might* be possible to write a program that can fix broken maps 23:08 kahrl it would work as follows: for each block in the database, deserialize it and re-serialize it 23:08 kahrl the (de)serialization code is the same as minetest's, but with a twist 23:08 VanessaE if a program could be written to fix a map, why can't the read part of that be used in-engine to do the same? 23:09 kahrl it ignores the field stating the number of static objects 23:09 kahrl instead, after each static object, it checks if the next byte is a 7 (= ACTIVEOBJECT_TYPE_LUAENTITY) 23:09 est31 kahrl's trick won't work if other fields freak out too 23:09 est31 it shouldnt be added to the engine 23:09 kahrl if that is the case, it keeps reading static objects 23:10 kahrl yeah this is highly dangerous if added to the engine 23:10 kahrl but for a script that attempts to fix people's broken maps, it's fine 23:10 est31 I have already a statistics program that reads every block for the map 23:10 est31 (modified minetest) 23:11 est31 but working with minetest codebase would be hard, in this case because you need full gamedef 23:11 est31 or at least nameid mapping 23:11 est31 perhaps more 23:11 est31 in order to reserialize 23:17 eugd there's also the problem of how they're getting out of bounds anyway 23:17 est31 yup 23:17 est31 right now we are only treating the symptoms 23:20 eugd why aren't object already subject to same unloaded-block physics as players? 23:28 est31 thats not related to the problem 23:28 est31 not to this one 23:36 kahrl est31: yay, nay? https://gist.github.com/kahrl/beec57412d0fa0fd1c7f 23:37 kahrl do we have an U16_MAX, btw? 23:40 hmmmm don't think so 23:40 hmmmm instead of defining it i always used the expression ((u16)-1) 23:42 kahrl ah yeah, I think I like that better than writing 65535 23:44 est31 kahrl, LGTM except perhaps #2610 should be described, links can and do rot 23:44 ShadowBot https://github.com/minetest/minetest/issues/2610 -- Invalid block data in database: unsupported NameIdMapping version 23:45 est31 guess both link and description are best 23:46 kahrl well, I hope github doesn't go the sourceforge path any time soon :) 23:46 est31 hrmm, should we reserve the count of 65535 for "overfull, please fix this mapblock"? 23:46 kahrl I'll add the description at least. Link might be a tad verbose? 23:46 est31 ah, it will overflow 23:47 est31 link as #abc is perfectly fine 23:47 est31 for me 23:48 hmmmm not saying that (u16)-1 is better than U16_MAX 23:48 hmmmm i think it probably should get defined in irrlichttypes.h 23:49 kahrl https://gist.github.com/kahrl/374b693e9ebdcf3835bb 23:50 est31 +1 kahrl 23:50 hmmmm looks good. 23:50 hmmmm btw what do you guys think of decoupling object storage from mapblocks 23:50 kahrl pushing in a few mins then 23:51 est31 hmmmm, not right now, I want to write the converter for VanessaE, ok? 23:51 hmmmm this is a pretty large change so i don't think it can be done right now. lol. 23:51 est31 I mean discussing it 23:52 hmmmm oh ok. 23:55 eugd uh 23:56 eugd don't you need an 'else' after that 'if'? 23:56 est31 no 23:56 eugd ok 23:56 est31 its return 23:56 eugd oh ok 23:56 eugd oh i see 23:57 est31 man, I'm too tired to do this 23:58 est31 will do it tomorrow