Time |
Nick |
Message |
00:24 |
est31 |
oooohhh |
00:29 |
hmmmm |
I'm going to add an optional buffer parameter to PerlinNoiseMap to avoid allocating new ones |
00:29 |
hmmmm |
this should speed things up a little since new items don't need to be allocated, also it should stabilize the memory consumption |
00:30 |
hmmmm |
oh dear, the leaky abstractions of lua memory management are crumbling around us |
01:10 |
|
Warr1024 left #minetest-dev |
01:23 |
hmmmm |
indeed, having the user pass a preallocated buffer results in a 9.6% performance improvement |
01:24 |
hmmmm |
also it reduces the variance of time variations |
01:24 |
hmmmm |
err... variance of time taken |
01:34 |
hmmmm |
i found a very reliable way of tracking memory usage of lua: lua_gc(L, LUA_GCOUNT/GCOUNTB) |
01:35 |
hmmmm |
an 80x82x80 noise buffer is precisely 8388616 bytes |
01:41 |
est31 |
hmmmm, do we really need setting groups? Nothing except noise params uses it. |
01:43 |
est31 |
I guess it won't be that hard to support them in the new version too. |
01:43 |
hmmmm |
I had bigger plans but never got the time |
01:44 |
est31 |
just you know |
01:44 |
est31 |
what when setting has itself as group for example? |
01:45 |
est31 |
(or any other, larger circle) |
01:55 |
|
Wayward_Tab joined #minetest-dev |
02:22 |
|
devmarth joined #minetest-dev |
02:30 |
|
Miner_48er joined #minetest-dev |
02:45 |
|
book` joined #minetest-dev |
02:50 |
hmmmm |
all MapgenParams is going to be a settings group |
02:51 |
hmmmm |
then we start breaking it up into categories |
02:51 |
hmmmm |
like clouds - enabled, radius, is_3d, speed |
02:51 |
est31 |
minetest's next language |
02:51 |
est31 |
lua formspecs and now settings |
02:51 |
est31 |
but I'm neutral in this debate |
02:53 |
est31 |
man I'd really love function pointers now |
02:53 |
est31 |
but instead I have to write my own iterator class |
02:54 |
est31 |
s/function pointers/closures/ |
02:57 |
hmmmm |
don't do anything too fancy... |
02:57 |
est31 |
ok found some other way |
03:41 |
|
prozacgod joined #minetest-dev |
03:46 |
|
FR^3 joined #minetest-dev |
03:48 |
|
FR^3 joined #minetest-dev |
03:58 |
|
FR^3 joined #minetest-dev |
04:08 |
|
FR^3 joined #minetest-dev |
05:07 |
est31 |
btw the current implementation for groups is leaky |
05:09 |
est31 |
because, when we allocate some setting a with a group g on a settings object o, then call o.update(p) for a settings object p where a is allocated with something else, then g is leaked |
05:10 |
est31 |
are we using that method at all |
05:10 |
hmmmm |
update?? |
05:11 |
est31 |
void Settings::update(const Settings &other) |
05:11 |
hmmmm |
not to my knowledge |
05:11 |
* est31 |
removes and tries to build |
05:12 |
est31 |
really great that c++ is so strong |
05:12 |
est31 |
in js you'd have to try |
05:12 |
est31 |
but will take some time until I get it building |
05:12 |
est31 |
bc other stuff |
05:30 |
|
Zeno` joined #minetest-dev |
05:34 |
est31 |
ok it is compiling... |
05:34 |
est31 |
hi Zeno` :) |
05:35 |
|
Wayward_Tab joined #minetest-dev |
05:38 |
Zeno` |
how's things? |
05:42 |
est31 |
well |
05:43 |
est31 |
btw what does happen when you do a straightforward c++ implementation of this: http://stackoverflow.com/a/4928805 |
05:47 |
Zeno` |
hmm |
05:48 |
Zeno` |
not really sure. Haven't I added that? |
05:49 |
Zeno` |
Can't remember what I have tried and not tried now :) |
05:49 |
* Zeno` |
looks |
05:54 |
est31 |
oh noes |
05:54 |
est31 |
the callbacks are organized in a map too |
05:54 |
Zeno` |
lmao |
05:55 |
Zeno` |
in Settings? |
05:55 |
est31 |
looks like I have to make SettingsEntryContainer generic in terms of the second type |
05:55 |
est31 |
yes |
05:55 |
Zeno` |
heh |
06:37 |
|
Anchakor joined #minetest-dev |
06:43 |
|
Krock joined #minetest-dev |
06:55 |
est31 |
small question. |
06:55 |
est31 |
I have the [] operator |
06:55 |
est31 |
which returns a reference |
06:56 |
hmmmm |
is it really necessary to add operator overloading?? |
06:56 |
est31 |
its not shown to the outside |
06:56 |
est31 |
only for MTSettingsContainer |
06:58 |
hmmmm |
if it's an internal thing, then it's really questionable :) |
06:58 |
hmmmm |
but anyway you never asked your question |
07:03 |
est31 |
I want to change two values when that reference gets updated |
07:03 |
est31 |
I guess I should've used pointers |
07:03 |
est31 |
now I'm using a set() method |
07:05 |
|
kilbith joined #minetest-dev |
07:11 |
est31 |
and now I see how ugly templates are in c++ |
07:12 |
est31 |
I did an approach with templates (for the callbacks) |
07:12 |
est31 |
but then saw how ugly they were |
07:12 |
est31 |
then I abandoned it |
07:13 |
hmmmm |
est, you really don't need to use as many C++ features as possible |
07:13 |
hmmmm |
trust me, most of them suck |
07:15 |
Zeno` |
blow 'em up! |
07:15 |
hmmmm |
anyway |
07:15 |
hmmmm |
i'm done with my investigation |
07:15 |
Zeno` |
what was being investigated? |
07:15 |
hmmmm |
high perlin noise memory usage |
07:15 |
Zeno` |
any results? |
07:16 |
hmmmm |
i'm definitely going to add a buffer parameter instead of creating a new table each and every call |
07:16 |
Zeno` |
good idea |
07:16 |
hmmmm |
that helps a lot with memory consumption and improves execution time by 9.6% |
07:16 |
hmmmm |
generating the noise result and then grabbing slices of the result with separate lua calls does not work out |
07:17 |
hmmmm |
it does minimize the amount of memory usage, but at a cost that's too high |
07:17 |
Zeno` |
cre... yeah, I was just about to say that when I was looking at that table (ages ago) something like 30% of the mapgen call was stuffing the data into the table (well, probably creating it) |
07:17 |
hmmmm |
it's about 7x slower to get the noise result in 80-value chunks rather than the whole 80x80x80 at once |
07:18 |
hmmmm |
>>> get3dMapSlice 81: 5106ns |
07:18 |
hmmmm |
>>> get3dMapSlice 524801: 5626590ns |
07:18 |
Zeno` |
slight difference |
07:18 |
hmmmm |
5626590/6560 = 858 |
07:19 |
hmmmm |
so, setting 80 values in bulk takes approximately 858 nanoseconds |
07:19 |
hmmmm |
whereas setting 80 values in its own lua call takes 5106ns |
07:19 |
hmmmm |
so that's actually 6x slower, not 7 |
07:20 |
hmmmm |
an 80x82x80 noise table takes up 8388616 bytes for 524800 values, which comes out to 15.98 bytes per value |
07:21 |
hmmmm |
so in 80 value chunks, you can bring down the memory consumption for lua noise result buffers to 1280 bytes |
07:21 |
hmmmm |
but at the cost of being 6x slower |
07:22 |
Zeno` |
:( |
07:23 |
hmmmm |
well, it's actually slower than 6x because this is already inside the C++ function |
07:23 |
hmmmm |
if you account for the lua to c++ overhead it's even worse. i can't calculate that because the lua os.timer() has a resolution of about 8ms |
07:24 |
Zeno` |
well... use the irrlicht timer :P |
07:24 |
hmmmm |
really the problem with that guy's PR is that the lua garbage collector wasn't turning on often enough |
07:24 |
hmmmm |
and the version of the mod he was using has extremely bad practices |
07:25 |
hmmmm |
i.e. creating 10 new noise object which is are a couple MB each every single call |
07:25 |
Zeno` |
How is the GC scheduled anyway? |
07:25 |
hmmmm |
err... s/is// |
07:25 |
Zeno` |
err wait... The VM must do that, nvm |
07:26 |
hmmmm |
it's not generational |
07:26 |
hmmmm |
i forget what but you can control this using lua_gc() |
07:26 |
hmmmm |
maybe it's a luajit thing only, but you can choose generational |
07:27 |
Zeno` |
hmm ok |
07:27 |
Zeno` |
I don't use luajit on my dev machine so I wouldn't know wtf it might or might not do |
07:28 |
hmmmm |
ahh okay no it's a lua 5.2-only thing |
07:28 |
Zeno` |
hahaha, that's funny. Websites that give screenshots of a console only program |
07:28 |
hmmmm |
incremental GC is the default, generational is an option |
07:28 |
hmmmm |
http://www.lua.org/manual/5.2/manual.html#2.5 |
07:28 |
Zeno` |
http://proguard.sourceforge.net/screenshot_console.gif <- impressive! |
07:29 |
hmmmm |
incremental mark-and-sweep |
07:30 |
kahrl |
Zeno`: the other way around is more impressive, IMHO ;) http://blogs.msdn.com/b/oldnewthing/archive/2015/05/06/10612563.aspx |
07:33 |
|
TheWild joined #minetest-dev |
07:54 |
|
jin_xi joined #minetest-dev |
08:00 |
|
Yepoleb_ joined #minetest-dev |
08:10 |
est31 |
honestly, all this *NoEx stuff should probably just be a param to the function |
08:13 |
est31 |
aaaand |
08:13 |
est31 |
they are horribly stupid |
08:14 |
est31 |
I mean what they do is enclosing it in try-catch |
08:14 |
est31 |
and thats not the way exceptions should be used |
08:14 |
est31 |
of course this is horribly slow |
08:19 |
|
Calinou joined #minetest-dev |
09:01 |
Zeno` |
lol |
09:01 |
Zeno` |
yes I looked at the same things est31 |
09:01 |
Zeno` |
many times |
09:01 |
est31 |
I will change that, but in a later commit |
09:01 |
Zeno` |
lol kahrl |
09:02 |
est31 |
this PR is only for the vector |
09:02 |
|
ElectronLibre joined #minetest-dev |
09:02 |
Zeno` |
hehe I removed a bunch of exceptions that were used for normal flow control (instead of if/else) :/ |
09:03 |
est31 |
what bout kahrl ? |
09:03 |
|
Hunterz joined #minetest-dev |
09:04 |
Zeno` |
his link |
09:04 |
est31 |
aah |
09:04 |
est31 |
lol |
09:05 |
est31 |
reminds me of that xkcd |
09:23 |
|
cib0 joined #minetest-dev |
09:36 |
|
selat joined #minetest-dev |
09:43 |
est31 |
wooow |
09:44 |
est31 |
there are two other settings that are accessed repeatedly |
09:44 |
est31 |
its nice to debug settings this way |
09:44 |
est31 |
fps_max and gui_scaling_filter |
10:07 |
|
AnotherBrick joined #minetest-dev |
10:16 |
chchjesus |
Hey, where is the code for each minetest item kept? |
10:16 |
chchjesus |
i.e. a pickaxe, for instance |
10:18 |
est31 |
chchjesus, please be more specific |
10:19 |
est31 |
minetest_game has mods/default/tools.lua |
10:19 |
chchjesus |
I have the source for minetest. There must be somewhere in the source tree that items are configured (for example, a pickaxe). Where in the source tree are these items configured? |
10:19 |
chchjesus |
Oh, hang on |
10:19 |
est31 |
the lua code is the right spot then I guess |
10:19 |
chchjesus |
I forgot that there are two separate repos. |
10:35 |
est31 |
what do people say about https://github.com/est31/minetest/commit/4ed23438d5474112f9d34bac25125f3961d1ea6d |
10:35 |
est31 |
is it ready for merge? |
10:35 |
est31 |
the improvement isnt perfect, I plan further commits on that |
10:39 |
est31 |
Zeno`, ^ |
10:40 |
Zeno` |
Last time I tried to do something similar I got yelled at |
10:41 |
est31 |
bad, what did you wanted to do |
10:41 |
est31 |
? |
10:41 |
est31 |
want* |
10:41 |
est31 |
or have |
10:42 |
Zeno` |
basically what you've written :) |
10:42 |
est31 |
dunno (english tenses ... ) |
10:42 |
est31 |
and why did they yell at you |
10:42 |
Zeno` |
celeron55 thinks it's a maintenance nightmare because people would have to add a setting (or enum in your case) in more than one place |
10:42 |
Zeno` |
so "nobody would ever add a setting again" |
10:43 |
est31 |
ah |
10:43 |
Zeno` |
settingdef.h needs a newline at end of file :) |
10:43 |
est31 |
this patch manages settings at a single place |
10:43 |
est31 |
settingdef.h |
10:43 |
est31 |
the rest is the preprocessor's job |
10:44 |
Zeno` |
Mine did it in a single place as well buy anyway |
10:44 |
Zeno` |
back to the question |
10:44 |
Zeno` |
from a cursory glance I think it looks great |
10:45 |
Zeno` |
nice preprocessor tricks |
10:48 |
Zeno` |
tested properly? |
10:48 |
celeron55 |
i've always given +1 for a preprocessor but hmmmm has stated he would absolutely hate one |
10:49 |
Zeno` |
hmm |
10:49 |
Zeno` |
est31, well without testing the code it "looks" good |
10:50 |
est31 |
I have done some arcane testing |
10:50 |
Zeno` |
voodoo |
10:50 |
est31 |
as in: the game still stars |
10:50 |
est31 |
starts* |
10:50 |
Zeno` |
lol |
10:50 |
Zeno` |
good enough! |
10:50 |
est31 |
(it didnt at the start because my awk script didnt copy the font paths) |
10:50 |
Zeno` |
have you output the source files after the preprocessor has been applied |
10:51 |
est31 |
then I see that it loads minetest.conf |
10:51 |
est31 |
and I can set settings |
10:51 |
Zeno` |
celeron55, est31: hmmmm is aware of this work already isn't he? |
10:51 |
est31 |
good idea |
10:51 |
Zeno` |
Pretty sure this patch is what we were talking about yesterday |
10:52 |
est31 |
I've shared it back then yes |
10:52 |
Zeno` |
Yeah, I thought so. I think he was more concerned about operator overloading than anything else but I might be wrong |
10:52 |
celeron55 |
wait what does this thing even do |
10:53 |
celeron55 |
this kind of a preprocessor thing could be used for generating a struct that directly contains all the settings with correct types, right? |
10:53 |
celeron55 |
this only adds numeric names? |
10:54 |
est31 |
yes |
10:54 |
est31 |
its also used to populate a map for quickly checking whether a name can be converted into an enum |
10:54 |
est31 |
value |
10:55 |
est31 |
the types would be harder I guess |
10:55 |
celeron55 |
this seems fine to me as-is as long as it has actually been tested to considerably improve performance |
10:56 |
celeron55 |
not theoretically |
10:57 |
|
crazyR_ joined #minetest-dev |
10:57 |
Zeno` |
It won't at the moment because nearly everything caches the values. But it should be easy to test by making a test class (unit test kinda thing) |
10:57 |
est31 |
on it |
10:58 |
celeron55 |
there are two heavy operations in the settings thing; only one of which is the name lookup |
10:58 |
est31 |
the other the type conversion? |
10:58 |
celeron55 |
yes |
10:59 |
est31 |
I want to do that too |
10:59 |
est31 |
this commit focuses on the preprocessor changes and the container class |
10:59 |
celeron55 |
also note that Settings actually still used for disk and network data formats |
10:59 |
celeron55 |
+is |
11:00 |
celeron55 |
it should probably be separated pretty much right now |
11:00 |
est31 |
how do you mean that? |
11:00 |
est31 |
settings get converted into binary form then sent to the client? |
11:00 |
est31 |
Only thing I saw was command line params |
11:02 |
celeron55 |
map generator parameters at least |
11:02 |
celeron55 |
they use none of this extra functionality and it can only hurt them |
11:03 |
est31 |
yea |
11:03 |
celeron55 |
also player serialization on disk uses Settings |
11:03 |
est31 |
interesting |
11:03 |
celeron55 |
and game.conf uses Settings |
11:04 |
celeron55 |
they should have a simpler version without any of this global settings specific stuff |
11:04 |
est31 |
the base structure -- a map -- stays the same. |
11:05 |
est31 |
when we set a setting, we check whether it corresponds to a global setting |
11:05 |
est31 |
if yes, we add an entry in the vector |
11:05 |
est31 |
if no, the vector stays empty |
11:06 |
celeron55 |
i think maybe the global settings class could use inheritance to base itself on the generic settings class |
11:06 |
celeron55 |
and add all the extra stuff on it |
11:07 |
est31 |
it would involve duplication everywhere the map is accessed |
11:07 |
celeron55 |
duplication? |
11:07 |
est31 |
basically every method copied |
11:07 |
est31 |
or I abstract it away |
11:07 |
celeron55 |
you can inherit as public so that every method is visible through the derived class |
11:07 |
est31 |
(every meaning every method that accesses the map in its own code) |
11:08 |
celeron55 |
there can be an issue with it but usually there isn't |
11:25 |
est31 |
damn |
11:25 |
est31 |
the issue is |
11:25 |
est31 |
there is no speed increase |
11:26 |
est31 |
or almost none |
11:27 |
est31 |
I always note ~0.25 usec for a getS16() call |
11:29 |
est31 |
so it seems the lock is why settings are so slow |
11:29 |
est31 |
or they aren't slow |
11:30 |
est31 |
ok, there is ~10% performance increase |
11:30 |
est31 |
when you have 300 settings |
11:31 |
est31 |
(which is in the range for minetest.conf) |
11:32 |
est31 |
oh sorry |
11:32 |
est31 |
the 10% are when you have 3000 settings |
11:34 |
est31 |
ah dammit |
11:34 |
est31 |
of course |
11:34 |
est31 |
my test was wrong |
11:34 |
est31 |
lol 10% increase out of nothing :) |
11:43 |
est31 |
oook |
11:43 |
est31 |
new numbers |
11:43 |
est31 |
its a 10x increase |
11:46 |
est31 |
this is the testing code --> http://pastie.org/10181015 |
11:51 |
est31 |
so I have looked at compiler output, and it does what advertised |
11:51 |
est31 |
however actually comparing code with diff like utilities is hard |
11:51 |
est31 |
because the settings are in uppercase |
11:51 |
est31 |
and are converted in runtime to lowercase |
11:57 |
|
deezl joined #minetest-dev |
12:23 |
est31 |
celeron55, can I do that separation between global and local settings in another commit? |
12:39 |
est31 |
I guess I'll do it in separate commits, and push them the same time. |
12:53 |
|
chchjesus_ joined #minetest-dev |
12:54 |
|
crazyR_ joined #minetest-dev |
12:59 |
|
TenPlus1 joined #minetest-dev |
13:00 |
TenPlus1 |
Hi folks, any devs up and active today ? |
13:07 |
|
AnotherBrick joined #minetest-dev |
13:09 |
|
rubenwardy joined #minetest-dev |
13:10 |
TenPlus1 |
Q. Is there any reason being at a particular spot on the map would cause the server to crash ? |
13:11 |
deezl |
TenPlus, some kind of corruption maybe |
13:11 |
TenPlus1 |
is there any way to fix it without losing the whole map ? |
13:12 |
deezl |
you could try setting the ignore map errors thing in minetest.conf |
13:13 |
TenPlus1 |
I already have ignore_world_load_error set to true |
13:13 |
deezl |
:( |
13:14 |
TenPlus1 |
std::bad_alloc error is getting me down |
13:21 |
deezl |
TenPlus1, is that the only error you get in debug? |
13:22 |
TenPlus1 |
yeah, it crashes server at random intervals and returns an std::bad_alloc error which I have no idea how to trace... have been logging terminal output since this morning so will go through that later when it's sent to me |
13:22 |
deezl |
ouch |
13:23 |
TenPlus1 |
plenty of memory, all mods working fine, server running smooth apart from that 1 problem on 0.4.12 stable and above |
13:25 |
deezl |
and it just happens when a player walks into a certain area on the map? |
13:25 |
TenPlus1 |
it's random but of late one area seems to set of instant crashes... |
13:26 |
TenPlus1 |
the same abm's are in effect all over the map, but this one area just makes it all weird... and I cannot narrow it down to any 1 thing |
13:27 |
deezl |
VanessaE was experiencing something similar a while back on one of the dreambuilder servers (creative I think), but I don't remember the exact cause. Perhaps she can shed some light if you can catch up to her |
13:27 |
|
cib_ joined #minetest-dev |
13:28 |
TenPlus1 |
will msg her and see if she's available for a minute or two |
13:30 |
|
Zeno` joined #minetest-dev |
13:31 |
deezl |
there's a sight for sore eyes |
13:32 |
TenPlus1 |
lol |
13:35 |
Zeno` |
yikes |
13:35 |
deezl |
hiya Zeno` |
13:36 |
Zeno` |
are you in #minetest? |
13:36 |
deezl |
no...should I be? |
13:36 |
deezl |
lol |
13:36 |
Zeno` |
yes... no chit chat here! It's forbidden by the dungeon master! |
13:36 |
Zeno` |
a grue will eat you |
13:37 |
deezl |
o.O |
13:37 |
deezl |
wasn't really chit-chatting |
13:37 |
deezl |
TenPlus1 is having an odd crash problem on his server |
13:37 |
Zeno` |
chitty chitty bang bang I saw you |
13:37 |
Zeno` |
the memory issue? |
13:38 |
Zeno` |
I suppose I should run massif in the latest build to see if anything is possibly leaking |
13:38 |
deezl |
std::bad_allocation when entering a certain area of the map |
13:38 |
TenPlus1 |
the only difference I see to VanessaE's server and Xanadu is the addition of "enable_mesh_cache = false" |
13:38 |
Zeno` |
TenPlus1, always the same area? |
13:39 |
TenPlus1 |
the crashes were random to start but this one area always sets it off... yes |
13:39 |
TenPlus1 |
everything in mods is working, it doesnt report any error apart from std::bad_alloc so no clue what's causing it |
13:39 |
Zeno` |
that's interesting |
13:40 |
Zeno` |
brb, rebooting into Linux (I've been playing games heh). I'll join your server |
13:40 |
TenPlus1 |
kk |
13:40 |
Zeno` |
don't ban me because I am zeno2 :P |
13:40 |
TenPlus1 |
lol |
13:42 |
|
Zeno` joined #minetest-dev |
13:43 |
Zeno` |
ok, I've enabled local map saving.. I'll chat when I join? |
13:43 |
TenPlus1 |
okie |
13:45 |
TenPlus1 |
... and it crashed |
13:45 |
Zeno` |
oh it did? |
13:45 |
Zeno` |
cool |
13:45 |
Zeno` |
thank you! :) |
13:46 |
TenPlus1 |
did you get a snapshot ? |
13:46 |
Zeno` |
looking... |
13:46 |
Zeno` |
yep! |
13:46 |
Zeno` |
thank you |
13:46 |
TenPlus1 |
anything odd ? |
13:47 |
Zeno` |
well I'll have to do some tests first |
13:47 |
TenPlus1 |
no probs... thanks for doing this... |
13:47 |
Zeno` |
very weird... it's not at map limits so can rule that out at least |
13:48 |
TenPlus1 |
if player crosses 30,000 boundary lines they get teleported back to spawn (needed for tp listening error) |
13:51 |
Zeno` |
one more time (sorry to have you crashing your server :( ) |
13:52 |
TenPlus1 |
and it's down... |
13:52 |
Zeno` |
maybe I have to chat when I'm there |
13:52 |
Zeno` |
that's odd |
13:52 |
TenPlus1 |
I may need to add an alert mod to let players know when it crashes |
13:53 |
Zeno` |
both times it didn't crash until I said something. Maybe a red herring though |
13:53 |
TenPlus1 |
I tp'd to that 1 location, waited for a sec and it went down... no chat, no placed blocks... |
13:54 |
TenPlus1 |
seems once it loads something specific it glitches and crashes |
13:54 |
Zeno` |
I did see a strange mesh but that was after it crashed |
13:55 |
Zeno` |
Setting up world with snapshot db now |
13:55 |
TenPlus1 |
any idea what the mesh was related to ? (mob, node, world) |
13:57 |
Zeno` |
nope... it was just a big purple highlighted area |
13:58 |
TenPlus1 |
oh, ignore that... someone punched a protector node to see the area it protects... |
13:58 |
Zeno` |
ok |
13:58 |
TenPlus1 |
it has a timer that removes it after 10 seconds |
13:58 |
Zeno` |
how big does is the area when it occurs? I.e. if I was 100 nodes above would it crash? |
13:59 |
TenPlus1 |
I can give u fly privs and spawn you 150 in the air... you can float down and I'll let you know when you hit the spot |
13:59 |
Zeno` |
ok |
13:59 |
Zeno` |
apologise to your players for me :( |
14:00 |
Zeno` |
one sec... deleting current snapshot |
14:00 |
TenPlus1 |
they know were testing for now |
14:05 |
TenPlus1 |
crashed |
14:06 |
TenPlus1 |
as soon as you went -4 |
14:06 |
Zeno` |
cool |
14:06 |
Zeno` |
looking at what I got... |
14:08 |
Zeno` |
ok I have the bigger area now, thanks :) I'll do some testing |
14:08 |
TenPlus1 |
Titanius is on so we'll update linix kernel to 4.01 and minetest to latest dev... |
14:08 |
Zeno` |
what git version are you currently using? |
14:09 |
Zeno` |
(git rev-parse HEAD) |
14:09 |
TenPlus1 |
yesterday's git... |
14:09 |
|
est31 joined #minetest-dev |
14:09 |
TenPlus1 |
3778 |
14:10 |
TenPlus1 |
build 3778 for ubuntu 14.04 64-bit |
14:11 |
est31 |
do you have a stacktrace? |
14:12 |
TenPlus1 |
I enabled --trace on standalone and it wouldnt crash... typical |
14:12 |
TenPlus1 |
now Titanius is online I can try and do one now |
14:12 |
Zeno` |
yep |
14:13 |
est31 |
--trace doesnt do stacktraces |
14:13 |
TenPlus1 |
what does ? |
14:13 |
est31 |
its a loglevel |
14:13 |
TenPlus1 |
debug_log_level = 1 ? |
14:13 |
Zeno` |
can I have your mapmeta.txt? (PM if you want to keep it private) |
14:14 |
est31 |
for stacktraces you will need a debugger |
14:14 |
TenPlus1 |
sadly that's over my head to do... |
14:14 |
Zeno` |
also, what database backend are you using locally? |
14:14 |
TenPlus1 |
default sql3 |
14:14 |
Zeno` |
ok |
14:15 |
TenPlus1 |
we tried mariadb at one point but it was too buggy |
14:17 |
TenPlus1 |
http://pastebin.com/k80ELwVC map_meta.txt |
14:17 |
Zeno` |
cheers |
14:25 |
TenPlus1 |
if I use worldedit and mark the whole area to be replaced by air, would that fix it ?? |
14:26 |
Zeno` |
not sure yet |
14:26 |
Zeno` |
what are the coords? |
14:26 |
deezl |
a possiblity, you could also try using the worldedit clearobjects function |
14:26 |
Zeno` |
(why don't I write stuff down? lol) |
14:27 |
TenPlus1 |
clearobjects will take more than 2-3 hours on a >50gb map |
14:28 |
est31 |
there is //clearobjects for worldedit |
14:29 |
TenPlus1 |
doh! forgot about that one completely... lemmie mark area |
14:30 |
|
hmmmm joined #minetest-dev |
14:31 |
TenPlus1 |
0 objects cleared in a 100 block radius of that point |
14:32 |
* Zeno` |
needs coords |
14:32 |
TenPlus1 |
crashed... |
14:32 |
Zeno` |
I have a cunning plan |
14:33 |
Zeno` |
I will join the server lol |
14:33 |
TenPlus1 |
do tell baldrick |
14:33 |
Zeno` |
:) |
14:33 |
TenPlus1 |
it doesnt involve cabbages does it ? |
14:35 |
hmmmm |
est31, futexes aren't slow on their own, they're slow if they're contended |
14:35 |
est31 |
? |
14:35 |
est31 |
ok good to know |
14:36 |
hmmmm |
i originally called for settings to be atomic but also okay is a read-preferring rwlock |
14:36 |
Zeno` |
that'd be right... doesn't crash |
14:36 |
Zeno` |
no, there are no cabbages but I have a turnip shaped like a... nvm |
14:36 |
hmmmm |
yeah so it seems like there's some kind of aggressive memory leak going on |
14:37 |
hmmmm |
we've had how many complaints about "random std::bad_alloc errors" |
14:37 |
Zeno` |
hmmmm, did you see that it happens in a single area consistently on xanadu? |
14:37 |
hmmmm |
did not |
14:37 |
hmmmm |
ugh i hate to suggest this but |
14:37 |
hmmmm |
do you think it could be network related |
14:37 |
Zeno` |
I've got a snapshot of the area (thanks TenPlus1!) but I can't reproduce locally |
14:38 |
Zeno` |
probably is |
14:38 |
Zeno` |
heh |
14:38 |
hmmmm |
does that area of the xandau server have a lot of active objects or something? |
14:38 |
Zeno` |
but if it was I should be able to reproduce locally as well... unless I didn't get enough of the map I guess |
14:38 |
hmmmm |
maybe it's that active object message code |
14:38 |
Zeno` |
running valgrind with the snapshot |
14:39 |
TenPlus1 |
not at all, only objects are mobs spawning on occasion and those are limited to 1 per area |
14:39 |
Zeno` |
could be, yeah (I have none of his mods installed obviously... just the db) |
14:39 |
TenPlus1 |
I ran the standalone server for an hour this morning with the new build and I couldnt get it to crash with all xanadu mods enabled |
14:40 |
TenPlus1 |
but this 1 area on server causes crash juyst being there |
14:41 |
est31 |
do you know how to build minetest? |
14:41 |
TenPlus1 |
have always downloaded from launchpad... my computer isnt the fastest am afraid |
14:41 |
Zeno` |
the other thing is that (if it's db-related) I probably don't have the naughty block in my snapshot now that I think of it |
14:41 |
Zeno` |
because the server would have crashed before it sent it (if it's db related) |
14:42 |
est31 |
yup |
14:42 |
est31 |
perhaps you download the mapfile? |
14:42 |
hmmmm |
maybe it's more beneficial to bisect to find the problem |
14:42 |
TenPlus1 |
so IF i use worldedit to mark the entire area and remove everything, will that remove bad block before it loads ? |
14:43 |
hmmmm |
the great this about this bug is that it's consistent |
14:43 |
TenPlus1 |
indeed |
14:45 |
Zeno` |
yeah |
14:45 |
Zeno` |
do you know how to build and bisect, TenPlus1? :) |
14:45 |
est31 |
its a regression? |
14:45 |
Zeno` |
est31, who knows |
14:46 |
Zeno` |
gdb trace would be nice... if that's not possible a bisect is the next best thing |
14:46 |
est31 |
can it be reproduced with 0.4.12 or 0.4.11? |
14:47 |
TenPlus1 |
est, 0.4.12 and upwards... that's when the server trouble started |
14:47 |
TenPlus1 |
0.4.11 was ok, even dev versions... but I cant move back now all mods are ported over to new versio |
14:49 |
Zeno` |
TenPlus1, <est31> do you know how to build minetest? |
14:49 |
hmmmm |
0.4.12 stable has problems?? |
14:49 |
TenPlus1 |
I could build minetest but as stated my computer is a simple net-top and quite slow... |
14:50 |
hmmmm |
TenPlus1, is it the server that crashes, or is it your game when you log into it |
14:50 |
hmmmm |
or both?? |
14:50 |
TenPlus1 |
the whole server crashes and everyone has to log back in once the script brings it back up |
14:51 |
TenPlus1 |
the only error is std::bad_alloc and nothing else to go on |
14:51 |
Zeno` |
16225, -4.5, 15531 is the location btw |
14:51 |
Zeno` |
well... close to that anyway |
14:51 |
est31 |
how large is the map file? can you share it? |
14:52 |
TenPlus1 |
yeah, you worled your way down from 150 high and as soon as you reached below 0 it crashed |
14:52 |
TenPlus1 |
it's over 50gb |
14:52 |
TenPlus1 |
xanadu is huge |
14:52 |
est31 |
oh |
14:53 |
hmmmm |
it's probably the combination of the map and the mods |
14:53 |
hmmmm |
if it helps solve this, i'd argue downloading 50gb is worth it |
14:53 |
TenPlus1 |
I've been through every mod it runs to look for anything that could be linked and found nothing... no errors... no glitches... |
14:53 |
Zeno` |
downloading 50g would take me about... 4 years |
14:54 |
hmmmm |
what we really need is somebody who's able to reproduce this and can use valgrind |
14:54 |
Zeno` |
mtz-basic is only 20G and I've only downloaded it once |
14:54 |
est31 |
what are your pc specs? compiling doesnt take ages... |
14:54 |
hmmmm |
he has a nettop |
14:54 |
TenPlus1 |
the server is in wisconsin so it would have to be archived and loaded beforehand by the owner |
14:54 |
TenPlus1 |
1.8 celeron with 2gb and ion mobile gfx |
14:54 |
Zeno` |
maybe I could scp to my server |
14:55 |
Zeno` |
that might only take 20 minutes |
14:55 |
Zeno` |
I'd have to check my quota though |
14:55 |
TenPlus1 |
no way to save a map chunk and send that ? |
14:55 |
Zeno` |
assuming I had ssh access lol |
14:55 |
TenPlus1 |
lol, that wont happen... Titanius is paranoid enough :) |
14:56 |
est31 |
I guess compiling is worth a try then |
14:56 |
est31 |
are somewhere debug builds of minetest available for download? |
14:56 |
TenPlus1 |
<-- is on a different machine to server...compiling here wouldnt make a difference, would it ? |
14:57 |
est31 |
you say you can reproduce it inside your local copy? |
14:57 |
TenPlus1 |
not anymore. |
14:58 |
TenPlus1 |
my standalone server runs all of the same mods that are on server, but I routinely wipe map and start fresh |
14:58 |
TenPlus1 |
so it hasnt happened yet |
14:59 |
est31 |
scp isn't slower than wget btw |
14:59 |
est31 |
in fact its faster |
14:59 |
est31 |
because no encryption |
15:00 |
sfan5 |
est31: scp is faster? |
15:01 |
est31 |
Zeno` suggested using scp, but wasn't granted shell access |
15:01 |
* VanessaE |
wanders in |
15:01 |
* sfan5 |
waves at VanessaE |
15:01 |
TenPlus1 |
hi VanessaE |
15:01 |
VanessaE |
hi |
15:03 |
VanessaE |
so regarding the server crash you're getting... I did have a problem like that once, but it was a corrupted block (or so the engine though) that I was able to clear off by ignoring load errors and filling the region with air using worldedit |
15:03 |
Zeno` |
I don't have 50GB free on my VPN anyway :) |
15:03 |
VanessaE |
other crashes that I've gotten are inconsistent and were usually brought about by the ghost entities bug that deezl alluded to |
15:03 |
Zeno` |
TenPlus1, what is you world seed? I'll try once more with my saved map so I can rule out mapgen |
15:03 |
VanessaE |
(usually those don't result in a crash though) |
15:04 |
Zeno` |
hi VanessaE |
15:04 |
VanessaE |
hey |
15:04 |
TenPlus1 |
fixed_map_seed = Morning_Glory_seed |
15:04 |
rubenwardy |
s/VPN/VPS? |
15:04 |
Zeno` |
sfan5, scp between two servers is faster |
15:04 |
VanessaE |
but I don't recall seeing a crash from my servers that cites bad::alloc -- that said, there is a smaller memory leak on my servers, zeno knows about that one. |
15:04 |
Zeno` |
rubenwardy, VPS (sorry) |
15:05 |
TenPlus1 |
I have the ignore map errors set to true but if all else fails I'll clear the area with air... but... having to do that on ever map error would be a shame |
15:05 |
sfan5 |
Zeno`: i thought est meant that scp was faster than wget |
15:05 |
rubenwardy |
Ok, cool. Easy mistype. I was just wondering if it was some usage of a VPN I wasn't aware of |
15:05 |
Zeno` |
sfan5, nah. I meant if TenPlus1's VPS connect was fast and mine was (it is) then I could scp 50GB pretty quickly |
15:06 |
TenPlus1 |
map is on server which isnt on my pc... and the guy who owns it has a limited connection |
15:07 |
est31 |
can you compile via ssh on the server? |
15:07 |
est31 |
I guess its faster than your box |
15:09 |
TenPlus1 |
server has no ssh connection... owner is paranoid of anyone getting in |
15:09 |
|
Wayward_Tab joined #minetest-dev |
15:10 |
est31 |
ok, out of ideas |
15:10 |
est31 |
without the owner being present |
15:10 |
est31 |
or doing what VanessaE suggested |
15:11 |
TenPlus1 |
ghost entities ? |
15:14 |
TenPlus1 |
like glitched out mobs ? |
15:15 |
Zeno` |
well it can't be a leak, surely |
15:15 |
Zeno` |
if it was a leak issue then teleporting to that location would not cause the bad alloc immediately after the server has started :/ |
15:17 |
Zeno` |
what's the issue number again? |
15:18 |
TenPlus1 |
https://github.com/minetest/minetest/issues/2661 |
15:18 |
VanessaE |
TenPlus1: the ghost entities bug refers to issue where entities are created out of nothingness, and are invisible, and are rapidly duplicated out of control even in the face of the engine trying to delete them (i.e. if there are too many in a block) |
15:19 |
TenPlus1 |
ah, gotcha... I do try and clean up entities in signs, frames and builtin_items from getting out of hand |
15:19 |
TenPlus1 |
I have to go for a while, back soon |
15:20 |
Zeno` |
out of ideas |
15:23 |
Zeno` |
ran valgrind on the server I "recreated" and nothing (as expected) |
15:26 |
est31 |
also out of ideas for the android shutdown bug |
15:26 |
est31 |
tried a "straigtforward implementation" |
15:26 |
est31 |
of what I proposed |
15:26 |
est31 |
didnt work |
15:29 |
VanessaE |
switching tracks.... |
15:29 |
Zeno` |
I'm beginning to think it's a 5.0.x bug |
15:29 |
VanessaE |
est31: #2612 has a new manifestation :) |
15:29 |
ShadowBot |
https://github.com/minetest/minetest/issues/2612 -- Over-one-meter collision box glitches |
15:29 |
Zeno` |
the fact that 5.1.x works kinda suggests it was well :) |
15:30 |
VanessaE |
load current Homedecor and place a spiral staircase. walk up to the top. you'll fall through the top two steps. :) |
15:30 |
est31 |
I'm running 4. something |
15:30 |
Zeno` |
est31, so am I but I run 5.x on VMs |
15:30 |
|
cib0 joined #minetest-dev |
15:30 |
Zeno` |
5.0.1... no go... 5.1.x works again |
15:31 |
est31 |
again? |
15:31 |
Zeno` |
I'm going to remove the PR and just make the changes that should be there anyway |
15:31 |
Zeno` |
yeah, which is why I'm suggesting it might be an Android bug |
15:31 |
est31 |
yea do them |
15:31 |
deezl |
homedecor has more new goodies? |
15:32 |
VanessaE |
deezl: indeed so |
15:32 |
deezl |
sheesh...hard to keep up |
15:32 |
est31 |
bye ppl |
15:35 |
VanessaE |
can someone please work on that bug so I can finish that node? |
15:37 |
Zeno` |
err |
15:37 |
Zeno` |
I've updated it |
15:37 |
Zeno` |
I give it High Priority! That'll get it fixed! |
15:40 |
VanessaE |
heh |
15:42 |
rubenwardy |
113 bugs O_o |
15:42 |
|
kilbith joined #minetest-dev |
15:43 |
Krock |
rubenwardy, a lizard would be happy about them |
15:47 |
|
Anchakor joined #minetest-dev |
15:51 |
|
Miner_48er joined #minetest-dev |
15:59 |
TheWild |
is that said sofa one big node, or it consists of 2/3 regular nodes? |
16:00 |
TheWild |
* 2 or 3 |
16:01 |
VanessaE |
in current homedecor, it's a single, big node (mesh) |
16:01 |
VanessaE |
in older versions it was three separate nodes stacked end to end |
16:56 |
|
TenPlus1 joined #minetest-dev |
16:56 |
TenPlus1 |
back... |
17:05 |
|
younishd joined #minetest-dev |
17:32 |
|
cib joined #minetest-dev |
18:04 |
hmmmm |
alrighty |
18:05 |
hmmmm |
I'm pretty sure the exact number depends heavily upon cache size and other variables but, using 2-node thick plane slices of noise seems to be the closest in terms of performance to the entire 3d buffer |
18:06 |
hmmmm |
and it takes up exactly 100 kB versus ~8 MB per buffer |
18:07 |
hmmmm |
i have a 'solution' for high lua memory usage, but unfortunately, it's gonna require mods to adopt it |
18:07 |
hmmmm |
and it's not nearly as user friendly |
18:45 |
|
TheWild joined #minetest-dev |
18:45 |
|
MinetestForFun joined #minetest-dev |
19:05 |
|
ElectronLibre joined #minetest-dev |
19:33 |
|
cib0 joined #minetest-dev |
19:47 |
|
kaeza_ joined #minetest-dev |
19:51 |
|
Miner_48er joined #minetest-dev |
20:14 |
|
leat joined #minetest-dev |
20:24 |
|
leat joined #minetest-dev |
20:32 |
|
kaeza_ joined #minetest-dev |
20:33 |
|
ElectronLibre left #minetest-dev |
20:34 |
|
leat joined #minetest-dev |
20:54 |
|
leat1 joined #minetest-dev |
21:24 |
|
jin_xi joined #minetest-dev |
21:26 |
|
leat1 joined #minetest-dev |
21:33 |
|
cib0 joined #minetest-dev |
22:54 |
|
Taoki_1 joined #minetest-dev |
23:18 |
|
kaeza_ joined #minetest-dev |