Time |
Nick |
Message |
00:08 |
|
eugd joined #minetest-dev |
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 |
00:56 |
|
eugd left #minetest-dev |
01:05 |
|
Miner_48er joined #minetest-dev |
01:36 |
|
pozzoni_ joined #minetest-dev |
01:38 |
|
JohannesG_ joined #minetest-dev |
01:38 |
|
enesbil joined #minetest-dev |
01:38 |
|
janakas joined #minetest-dev |
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 |
02:09 |
|
deltib joined #minetest-dev |
03:43 |
|
Puma_rc joined #minetest-dev |
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) |
06:22 |
|
Krock joined #minetest-dev |
06:58 |
|
est31 joined #minetest-dev |
07:19 |
|
Calinou joined #minetest-dev |
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 |
07:52 |
|
Krock joined #minetest-dev |
09:17 |
|
Megaf_ joined #minetest-dev |
09:25 |
|
nrzkt joined #minetest-dev |
09:45 |
|
proller joined #minetest-dev |
10:00 |
|
est31 joined #minetest-dev |
10:03 |
|
exoplanet joined #minetest-dev |
10:23 |
|
Krock joined #minetest-dev |
10:31 |
|
H-H-H joined #minetest-dev |
10:32 |
|
Megaf joined #minetest-dev |
10:57 |
|
Player_2 joined #minetest-dev |
11:12 |
|
H-H-H joined #minetest-dev |
11:20 |
|
proller joined #minetest-dev |
12:07 |
|
Amaz joined #minetest-dev |
12:12 |
|
julienrat joined #minetest-dev |
12:12 |
|
julienrat left #minetest-dev |
12:13 |
|
julienrat1 joined #minetest-dev |
12:14 |
|
turtleman_ joined #minetest-dev |
12:16 |
|
julienrat1 left #minetest-dev |
12:19 |
|
Lunatrius` joined #minetest-dev |
12:24 |
|
est31 joined #minetest-dev |
12:46 |
|
proller joined #minetest-dev |
12:46 |
|
Lunatrius joined #minetest-dev |
13:01 |
|
everamzah joined #minetest-dev |
13:15 |
|
hmmmm joined #minetest-dev |
13:43 |
|
julienrat joined #minetest-dev |
13:54 |
|
Lunatrius joined #minetest-dev |
13:59 |
|
Soni joined #minetest-dev |
14:10 |
|
Hunterz joined #minetest-dev |
14:27 |
|
eugd joined #minetest-dev |
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:43 |
|
Siva joined #minetest-dev |
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 |
jamesjames-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 |
jamesjames-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 |
jamesjames-Vostro-1520:~/Desktop/minetest$ git rebase -i HEAD~22 |
14:49 |
eugd |
[detached HEAD 64fef2a] Update map.cpp |
14:49 |
eugd |
Author: EUGD <emugodcomcast.net> |
14:49 |
eugd |
6 files changed, 79 insertions(+), 24 deletions(-) |
14:49 |
eugd |
Successfully rebased and updated refs/heads/master. |
14:49 |
eugd |
jamesjames-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 |
jamesjames-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 |
15:26 |
|
CraigyDavi joined #minetest-dev |
15:43 |
|
selat joined #minetest-dev |
15:46 |
|
eugd1 joined #minetest-dev |
16:00 |
|
MinetestForFun joined #minetest-dev |
16:09 |
|
ElectronLibre joined #minetest-dev |
16:09 |
|
Tom-s joined #minetest-dev |
16:10 |
|
eugd joined #minetest-dev |
16:19 |
|
eugd1 joined #minetest-dev |
16:53 |
|
CraigyDavi joined #minetest-dev |
17:11 |
|
DFeniks joined #minetest-dev |
17:30 |
|
CraigyDavi joined #minetest-dev |
17:43 |
|
bluegreen joined #minetest-dev |
17:59 |
|
nrzkt joined #minetest-dev |
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 |
<eugd> 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 |
18:39 |
|
Robby joined #minetest-dev |
18:43 |
|
zupoman joined #minetest-dev |
18:55 |
|
Miner_48er joined #minetest-dev |
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:03 |
|
Taoki joined #minetest-dev |
19:04 |
Krock |
<eugd>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 |
|
rubenwardy joined #minetest-dev |
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:19 |
|
Robby joined #minetest-dev |
19:23 |
|
Robert_Zenz joined #minetest-dev |
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:30 |
|
notgonnaregister joined #minetest-dev |
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. |
20:59 |
|
CraigyDavi joined #minetest-dev |
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:43 |
|
H-H-H joined #minetest-dev |
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:46 |
|
proller joined #minetest-dev |
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:50 |
|
proller joined #minetest-dev |
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:24 |
|
rubenwardy joined #minetest-dev |
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:50 |
|
treetrunk left #minetest-dev |
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:51 |
|
est31 joined #minetest-dev |
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 <math expression> |
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 |