Time Nick Message 08:39 celeron55 19:12:44 <+sapier> is there any major issue that would be fixed by starting from scratch I missed by now 08:40 celeron55 i said i would like to do a focused effort with someone on researching the subject, but then everyone started just shouting around miscellaneous things like usual 10:51 proller celeron55, one more shoot around: universe sized game, top level - lot of gravity points (planets, stars), every point can contain world like current 10:52 proller with rotating planet sky can be real, with reachable (via teleport) start and planets 10:54 celeron55 don't say those to me; nobody gains anything from it 10:54 celeron55 except you gain a little bit of hate from me 10:55 celeron55 it's and odd thing to desire i must say 10:55 celeron55 an* 13:46 proller https://github.com/minetest/minetest/pull/999 jack pot! 13:47 celeron55 someone has to make sure 1000 is the best pull request ever 13:49 celeron55 maybe i should aim for fixing the object duplication more tonight and making pull #1000 out of it 13:49 celeron55 (i'm pretty sure someone accidentally makes #1000 out of something random before that) 13:50 Kray i'm gonna make lörs lärä request 13:50 Kray and you can't prevent it 13:51 celeron55 well that's better than something else i guess 13:52 proller wtf with guiFormSpecMenu.cpp ? why conflict? http://paste.org.ru/?z4joi2 13:54 proller looks like rebase in master 13:58 celeron55 note the spaces before '+'s 13:58 celeron55 they are diffs stored in the actual file in the repo 13:58 proller but i not touched this file 13:58 proller strange 14:00 sfan5 can someone please fix this: src/util/numeric.cpp:146: error: integer constant is too large for ‘long’ type 14:02 celeron55 http://stackoverflow.com/questions/11691121/warning-integer-constant-too-large-for-long-type-but-it-is-a-uint64-t 14:02 celeron55 try it yourself 14:12 sfan5 fix incoming in 5 mins 14:13 celeron55 so that's the 1000th pull request? :P 14:16 sfan5 no, I'll push directly 14:17 sfan5 1000 deserves something better :P 15:29 ShadowNinja zat: Have you been able to add multiple lines to /rollback_check output yet? 15:31 zat I haven’t had time 15:31 zat I am really busy with family stuff sorry 15:32 zat However can the new rollback be included as is in the next minor version? 15:32 proller hahahahaha 15:34 ShadowNinja zat: I would like to get it in 0.4.8, but it has to be ready soon. I will see if I can fix rollback_check myself. 15:50 zat I would rather call it a feature improvement. Since now it works as it claims to. 16:22 ShadowNinja Yes, but either way... 16:28 PilzAdam I dont think that 997 is a "blocker" 16:32 PilzAdam its already in a stable release and its not that important to block a release 16:33 celeron55 activeobject bug counter: 1 16:41 thexyz and well the patch is already here so instead of arguing whether it's a blocker or not why not merge it? 16:41 celeron55 stumbled upon sapier's fix which only makes things worse in this regard 16:43 celeron55 (activeobject bug counter: 2) 16:53 sapier celeron55 what fix are you talking about? 17:00 ShadowNinja zat: You should use a time_t instead of a int. A int can be 32 or even 16 bits long, which isn't enough to store time. 17:01 sapier you're right shadow time_t is correct but I guess there's no 16bit os available to run minetest at 17:04 sapier PilzAdam imho any known (not exremely rare) crash is a blocker no matter if it was there before or not 17:06 ShadowNinja sapier: Even 32-bit will be too small soon. (I forget when) 17:07 ShadowNinja And the timestamp in the DB should be a "TIMESTAMP", not a "INTEGER". 17:07 sapier unix time has epochs ;-) 17:07 sapier we just start a new one soon 17:14 celeron55 what changes related to this bug have there been? 17:14 zat ShadowNinja: that wont make difference unless I want to use certain functions for date/time. 17:14 zat still, they should work 17:14 celeron55 i have some very strange behavior and would really like to make sure it's not caused by some half-thought quickfix 17:15 sapier I remember only one bugfix directly related to entities that one where entities got disabled by client while server still thought they were active thus they never got resent to client 17:15 celeron55 where's that? 17:15 celeron55 sounds relevant 17:16 sapier puuhh was marged some months ago 17:16 sapier merged 17:16 celeron55 yes, what is the commit message or changed line or something? 17:16 celeron55 or who did it 17:16 sapier I have a look for it 17:20 sapier https://github.com/sapier/minetest/commit/0ac74f36e2599116897f3e27ca973162a8dbbe3f 17:21 celeron55 wtf 17:21 celeron55 i have a local modification here that basically rolls back that change 17:22 sapier then you'll loose entities on client again 17:22 celeron55 that "fix" isn't a fix at all; it somehow avoids the client losing the object by duplicating the object 17:22 sapier actually the client doesn't loose the object 17:22 celeron55 so that the one that the client lost stays on the server and the server creates a duplicate that it sends to the client 17:22 sapier the object is unloaded on purpose 17:23 celeron55 that patch is the main reason for object duplication 17:23 sapier ok then we need to find a way to make server send objects to clients again 17:23 celeron55 well OBVIOUSLY we do 17:24 sapier I guess I didn't see the duplication there but what I know is client deactivates the object while server doesn't 17:24 sapier and server only sends objects on activation thus the object never is sent again 17:25 celeron55 the server deactivates the object just fine 17:25 sapier it's quite simple to trigger the bug I tried to fix there 17:25 celeron55 the issue is that it somehow doesn't re-activate it afterwards when it should 17:25 sapier put a object somewhere 17:25 celeron55 i can reproduce this completely predictably 17:25 celeron55 that's why i am so directly blaming you 17:26 celeron55 8) 17:26 sapier I don't have a problem yet if this one isn't a propper solution for the original problem we still need a solution for that one ;-) 17:27 celeron55 well i would be far in the making of it by now if i wouldn't have had to hunt this down first 17:27 sapier while missing entities are way better as of servers point of view ... for gameplay missing is as bad as duplication 17:28 sapier don't blame me I told multiple times that this fix might be related to duplication ... a fix for loss is always suspicious for duplication ;-) 17:28 ShadowNinja zat: It will work until time needs more than 32 bits. You also should align things with spaces, as developers set different tab widths. (I use 8, it looks like you use 4) 17:28 PilzAdam sapier, you do realise that the duplications are more than 1000 per object, that causes massive FPS dropdowns (from 60 to 1 or 2) 17:28 PilzAdam and you think that is as bad as missing objects for the gameplay? 17:29 sapier it is 17:29 sapier in fact you almost everytime loose most of entities until you restart client 17:29 celeron55 i found the original bug now... and it's really trivial 17:30 celeron55 (...if one knows how this thing works) 17:30 sapier :-) obviously you're the only one who really does numerous ppl have been looking for the entity loss issue before me 17:31 sapier need to restart my router ... firmware update 17:33 sapier btw celeron55 you did look at that commit prior merge too ;-) 17:33 zat ShadowNinja: you really think my table structure will remain unchanged until 2038? 17:34 zat and that compilers / storage engines won’t work that around even if so? 17:34 zat :PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP 17:34 PilzAdam zat, whats wrong with changing it to work until the universe collapses? 17:35 sapier1 btw celeron55 you did look at that commit prior merge too ;-) 17:35 zat PilzAdam: having searches on integer columns perform much better than in numeric (actually varying char) columns. 17:36 celeron55 sapier: it's impossible to know if a bugfix is correct without understanding the bug 17:36 celeron55 nobody understood that bug at the time 17:36 sapier1 of course obviously I missunderstood bug too 17:38 celeron55 understanding this bug is actually quite easy; it's related to the two different forms of static objects; but a correct fix requires more than little of thought 17:38 sapier It's always easy if you know how things are supposed to work ;-) 17:39 sapier yet I'm glad if this is fixed correct finaly 17:39 ShadowNinja zat: And at least one newline between functions please. 17:39 sapier my appologies to everyone suffering from incorrect fix 17:40 zat ShadowNinja: stop forcing me to code the way you personally like 17:41 zat once again and I am done contributing to minetest. 17:42 sapier zat http://dev.minetest.net/Code_style_guidelines is the only thing you are forced to do ... everything else is things you to to make coredevs more pleasant to merge the pulls ;-) 17:43 ShadowNinja ^ I beleive that requires two newlines, but that isn't really folowed in the code, although one is. 17:44 sapier lol "Contrary to what some people may believe, NULL is a part of the official C++ standard. " someone wanted to have last word ... right ;-) NULL is defined in standard as "implementation specific" ... so at least that sentence is correct :-) 17:44 zat even a single newline between functions makes them look horrible when folded in vim. 17:45 sapier don't use vim ;-) imho between functions there should even bee a /***/ line ;-) 17:45 zat eh 17:45 sapier at least in cpp files ... but that's my personal preference too 17:46 ShadowNinja zat: Folded? I use vim and they look better with a newline. 17:46 sapier vim .... surrounded by masochists :-) 17:47 zat ShadowNinja: that is your humble opinion. 17:47 zat sapier: ???, I just cannot stop using vim now. 17:47 sapier I know it's difficult to switch habits 17:47 zat Give me another IDE and code ends up full of :w, :x, :q and closing the document accidentally every one minute. 17:49 celeron55 i use vim 17:49 sapier everyone should use it's editor of preference yet code needs to be as easy to read as possible for all editors 17:49 celeron55 but i don't use folding of functions in vim, and if the folding of functions looks bad in some editor, it's the editor's, not the codes fault 17:49 sapier I gues snow I know why debug is -O1 :-) 17:50 proller astyle --style=attach --indent=tab --keep-one-line-blocks --keep-one-line-statements --indent-classes --pad-oper *.cpp *.h 17:50 sapier celeron if that would be true we wouldn't have to stick to 80 chars per line 17:50 proller ^ minetest-friendly 17:50 zat celeron55: I cannot blame the editor for not looking the way that I personally like. 17:51 celeron55 proller: --indent-classes is wrong 17:51 zat Or at least cannot say, objectively, it is not a good editor. 17:52 celeron55 it's sad that vim uses it's own obscure scripting language but whatever, can't help that 17:53 sapier celeron is the magic all entity problems fixing pull request supposed to be #1k 17:53 celeron55 i hope nobody creates a pull request or issue before i get this properly tested 17:54 celeron55 maybe i should already create it and update it along the way 17:54 sapier I suggest creating it and add force push the final version ;-) 17:54 sapier :-) same idea 17:56 celeron55 https://github.com/minetest/minetest/pull/1000 17:56 celeron55 8) 17:56 sapier "once and for all" brave claim :) 17:57 rubenwardy Woooo hoooo! 17:58 celeron55 if that happens to compile, feel free to test; but it's not intended to work yet 17:58 celeron55 recompiling after switching branch on my laptop takes so many minutes i guess i'll go eat now 17:59 kaeza yay pull #1000 :D 17:59 rubenwardy 1000 :O 18:00 sapier lets open some bottles of champagne ;-) 18:00 ShadowNinja sapier: So, why are spaces in list names invalud? 18:01 sapier because it crashes serialization :-) ask PilzAdam he said this is invalid anyway 18:01 sapier my patch just prevents ppl from creating those lists 18:01 ShadowNinja Ah, just saw his comment. Perhaps serialization should be fixed then. 18:02 sapier I don't see any use in listnames with " " ... they're identifyers not descriptions 18:02 sapier yes technicaly " " is a character as any other :-) 18:03 PilzAdam ShadowNinja, the format is "List main 32" so "List " 18:03 ShadowNinja Yes, but why not allow "This is some list with\nfancy characters. :-)" 18:04 ShadowNinja "List with\ spaces 123" 18:04 kaeza don't see why would anyone use spaces in list, as sapier said 18:04 kaeza listnames* 18:04 sapier why increase complexity of code for no sane reason? 18:04 ShadowNinja Ok, it can always be added later... 18:05 sapier yes but imho only if someone really finds a sane reason to do so ;-) 18:05 PilzAdam ShadowNinja, it can not be added without breaking the serialization format, so that will not happen 18:06 sapier PilzAdam did you read my explanation in pull request? 18:07 PilzAdam yes 18:07 sapier any open questions left? 18:09 sapier I remember someone fixed the formspec chat overlay issue some weeks ago better then my version does anyone remember who did this? 18:10 thexyz proller: #999 how about looping through the list of players and checking if the player we're sending message to is the one who died? 18:11 sapier I know we can't handle e.g. 64 players yet but do we really want to send that information to all of them? think about some sort of deathmatch this will mess up screen 18:11 proller sapier, i can ;) 18:12 sapier especially if those damn chat messages stop you from clicking formspecs ;) 18:12 PilzAdam it should be done by a mod, rather than forced to everyone by hardcoding it in the engine 18:13 proller maybe make it in lua by default? 18:14 proller and remove hardcoded + //chat_backend.addMessage(L"", L"You died."); 18:14 sapier and maybe add a config switch around it too :-) 18:14 celeron55 now #1000 should work 18:15 celeron55 there has been two distinct object duplication bugs 18:15 celeron55 the other one i fixed already, and the other one was caused by sapier's patch 18:16 sapier and the original entity loss too? 18:16 celeron55 what i fixed already had existed since forever 18:16 celeron55 i've fixed that correctly now 18:16 celeron55 read the commit message 18:17 celeron55 now, the question is, is there a third one? 8) 18:18 sapier I know how to check the loss problem so this is easy to check 18:20 sapier sad to tell entity loss isn't fixed 18:20 PilzAdam celeron55, "item duplication"? arent we talking about object duplication? 18:21 celeron55 message fixed 8) 18:21 celeron55 sapier: what is your test case? 18:21 sapier add a entity e.g. a cart or something else run beyond visible range and run back to that entity 18:22 celeron55 oh crap, how did it work when i tested exactly that just a moment ago 18:22 sapier my testcase was a cart moving out of sight by itself ... I ran behind it but it kept away 18:22 sapier logging out and in brought it back 18:27 celeron55 i tested it again and found one problem, which might or might not have happened to you (pull updated now) 18:28 celeron55 oh, okay 18:28 celeron55 it looks like that case isn't handled 18:44 sapier tell me once I shall test again 19:30 ShadowNinja I made rollback_check work the way I wanted. The results are limited to 5 by the query though, which I would like to change. 19:41 celeron55 sapier: now 19:53 sapier way better 19:53 celeron55 i am quite sure you can't get any hidden or duplicated objects now 19:53 celeron55 prove me wrong 19:53 sapier ran behind a cart for 10 minutes now didn't vanish once 19:59 sapier celeron you didn't reverte my change for the hack is this correct or did you miss it? 20:02 ShadowNinja zat: (ABS(`x`) - ABS(?)) <= ? <-- Should'nt this be "ABS(`x` - ?) <= ?"? 20:05 ShadowNinja You can now see the whole rollback log if you use something like "/rollback_check 1000 10000000 1000000" :-D 20:05 ShadowNinja ($3 == limit) 20:06 VanessaE um... help? http://pastebin.ubuntu.com/6407131/ 20:06 VanessaE ( ^^^^ shaders are *disabled* ) 20:07 PilzAdam VanessaE, is that master, or RBAs branch? 20:07 VanessaE master. 20:07 VanessaE well with a bunch of my patches, but nothing I wasn't using yesterday 20:08 PilzAdam whats the diff against master with your patches? 20:08 zat ShadowNinja: about the abs operation, I am not sure 20:08 zat I just copied it :) 20:09 VanessaE PilzAdam: quite a large diff. let me just check against master first. 20:09 PilzAdam VanessaE, also a verbose log when its reproduceable 20:09 zat ShadowNinja: might there be some case in which both would yield different results? 20:11 ShadowNinja zat: I beleive -100 == 100 there. Anyway, I was getting incorrect results, changed that, and now it works. 20:13 ShadowNinja zat: I also optimized get_last_node_actor by using a limit of 1 and front() insteat of a loop that stops on the first entry. 20:13 zat ShadowNinja: I am pretty sure the old code used two ABS()s too. Maybe the old code was bad too. 20:13 ShadowNinja I think I will just alias it in Lua to get_node_actors(limit=1)[1] 20:13 zat But nobody ever noticed since nobody ever dared to try a too big rollback_check :) 20:14 ShadowNinja Of course does anything use the rollback functions other than builtin? 20:14 zat idk 20:15 zat When I have time again I would like to make times more human friendly. So I can provide arguments such as 1m, 2d, 1w. 20:19 ShadowNinja *shrug* It takes three lines in depreciated.lua to be compatible, so I'l leave it. 20:19 VanessaE PilzAdam: clean build from master, currently up-to-date. terminal output, http://pastebin.ubuntu.com/6407183/ debug log, http://pastebin.ubuntu.com/6407186/ 20:20 celeron55 sapier: your change for the "hack" did nothing in practice 20:21 VanessaE this happens when connecting to my Realtest server ( vanessae.mine.bz 30000 ) but only when HDX is enabled. 20:21 VanessaE er 30004 is realtest. doesn't happen when connecting to, say, survival (30001) 20:21 celeron55 sapier: i only reverted the part that broke stuff 20:23 sapier ok hope the other thing isn't wrong too 20:28 troller crashing server on any lua error is annoying 20:28 sapier hopfully shadow completes his fixes soon 20:28 troller 80% mods can crash 20:29 troller 2-3 times today 8( 20:29 sapier that won't change ;-) 20:29 celeron55 there needs to be very good error reporting if it's made to not crash 20:30 celeron55 not so that you need to go look in a 100k line log 20:30 troller maybe special file, or just grep in debug.log 20:30 celeron55 maybe the server could write a file for each error in an error report directory 20:30 sapier yet what shall server do in case of lua error ... just continue? 20:30 VanessaE debug build of minetest, master branch, showing the crash on joining the offending server: http://pastebin.ubuntu.com/6407236/ 20:30 celeron55 sapier: that's a problem too 20:30 VanessaE with gdb backtrace. 20:31 celeron55 sapier: ...actually, that's a pretty considerable problem 20:31 troller sapier, break current lua function, and continue 20:31 troller maybe break step 20:31 sapier in worst case a mods internal data are completely messed up causing even more harm 20:31 celeron55 troller: that's what javascript in browsers do... and it kind of works 20:31 celeron55 so maybe it's reasonable in minetest too 20:31 sapier yes but javascript usually doesn't modify your hdd 20:32 troller sapier, if lua code breaked - it cant write bad data to file (in this step) 20:32 celeron55 well these days there's localstorage and cookies and whatnot... but yeah, it kind of depends on the mod 20:32 PilzAdam VanessaE, I cant look into that now, I have to go to sleep; bye 20:32 VanessaE why is minetest fucking with shaders when I explicitly turned them off in the config? 20:32 troller maybe unload mod (but it harder) 20:32 sapier you think about mods not storing global data persistent for other steps 20:33 celeron55 the only way to unload a mod is to reload all mods leaving that mod out 20:33 celeron55 in a clean lua environment 20:33 sapier might be possible 20:33 celeron55 i think that functionality should be done some day 20:33 sapier I guess this wouldn't be hard to do too 20:34 sapier mainmenu engine is created each time a game is left this should work for scriptapi engine too 20:34 celeron55 if it was possible to reload the lua environment, it would also be possible to add a new mod without dropping clients 20:34 sapier wait ... the register things may be difficult 20:34 ShadowNinja What should the format of the rollback_check messages be? I have "%s changed %s at %s to %s %d seconds ago." currently. 20:35 celeron55 it needs syncing with clients 20:35 celeron55 basically redo the initialization that is currently done only right after connecting 20:35 sapier ok way more effort than initial thought ... as always :-) 20:36 celeron55 and it would be quite slow and definitely noticeable to players 20:37 sapier better stall for some seconds than for minutes till restart 20:37 troller add or update mod 20:38 sapier hmm maybe it may be even less effort to mark a mod bad in error handler and still crash server, a restart script would restart while bad marker will prevent loading of a mod on restart 20:38 sapier yet that requires to find out what mod crashed the server 20:38 celeron55 one option is to not implement runtime reload but rather just tell clients to reconnect automatically and restart the whole server 20:38 celeron55 it would be quite easy 20:39 celeron55 everything is persistent anyway 20:39 celeron55 and server boot time is quite minimal 20:39 sapier yes but to detect what mod crashed server we'd need to do something similar to what I do in mobf to do statistics 20:40 celeron55 that'd need to be done in any case, yes 20:40 sapier so each register call needs to modify the called function adding a wrapper providing the modname 20:41 sapier this way we could even find out which mods cause most cpu load 20:45 ShadowNinja Currently minetest.rollback_get_node_actions returns a list of http://pastebin.ubuntu.com/6407308/ Should I use tables instead of strings there? 20:46 sapier shadwo is your lua errorhandler fix ready? 20:47 ShadowNinja sapier: Yes, I beleive so. Have you looked it over? 20:47 VanessaE so what about my crash? 20:47 sapier can you reproduce it? 20:47 VanessaE many times over. 20:48 sapier in master too? 20:48 VanessaE in master. 20:48 sapier any idea how to trigger it? 20:49 VanessaE lemme re-check it just to be safe 20:50 sapier Shadow any chance you change LuaError back to LuaError(L,"text") I don't se any need for rotating it ;-) 20:50 VanessaE oh great. Now it's going to make a liar out of me AGAIN 20:50 VanessaE I'm getting sick of this shit 20:51 ShadowNinja sapier: I needed to switch it to make the lua_State* optional. 20:51 VanessaE sapier: I posted the results above. HDX 256px + my realtest server == crash in some obscure shaders function that should not have been being used to begin with, as shaders were disabled. 20:52 ShadowNinja (Otherwise you get two backtraces or need another boolean argument. 20:52 sapier is it necessary to be optional? 20:54 sapier there are exactly 2 situations where you don't have a second parameter ... you need to change way more than 2 lines to rotate the parametest ... you could supply NULL in those lines and reduce the patch drasticaly 20:59 sapier greate those shaders are right after reading shader configuration ... but it's just ignored :) 21:01 VanessaE sapier: ok, I can reproduce it consistently with master. 21:02 VanessaE same crash as noted above. get HDX 256, Turn on any or all settings you want except leave preload-item-visuals turned off. connect to vanessae.mine.bz 30004 . 21:03 sapier shaders aren't exactly disabled there could you try modifying mapblock_mesh.cpp ~ L1113 http://pastebin.com/ZPkZF8X4 21:03 VanessaE um.. 21:04 sapier it's a quick fix I think those materials should be defined later 21:04 sapier just remove the shadermat1-bumpmaps2 block 21:04 sapier replace it by those things in the pastebin 21:07 VanessaE sapier: so, http://pastebin.com/8Mer7Wn4 ---> http://pastebin.com/2dtFixkR 21:07 VanessaE like that? 21:07 sapier seems to be fine yes 21:08 VanessaE sapier: no good. 21:08 sapier no build or still crashing? 21:09 VanessaE still crashes, but in a different place now: 21:09 VanessaE http://pastebin.ubuntu.com/6407414/ 21:11 sapier ok so that bug with shaders is unrelated to your crash 21:11 celeron55 seems like memory corruption to me 21:12 troller die and join message from lua - https://github.com/minetest/minetest/pull/999/files need to add config option "die_broadcast" ? 21:12 celeron55 run it in valgrind (and go eat your preferred kind of meal while it takes forever to danything) 21:12 sapier my first thought too but it's now a completely different location yet same assertion 21:12 celeron55 do anything* 21:12 celeron55 that assertion is a very basic sanity check that will never fail unless memory is corrupted 21:13 VanessaE want a full backtrace of it? 21:13 VanessaE this is a debug builg 21:13 VanessaE build* 21:14 sapier or reqeuests within texture queue are messed up yet I don't see a reason why a mutex queue should be messed up 21:15 VanessaE here's what's left on the minetest window at the time of the crash: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/Screenshot%20-%2011122013%20-%2004:13:36%20PM.png --- and here's the full debug + backtrace from gdb: http://pastebin.ubuntu.com/6407451/ 21:16 celeron55 sapier: i have never seen that queue system fail in any way whatsoever 21:16 celeron55 sapier: and it has been there since the start of time 21:16 celeron55 so it seems unlikely 21:17 sapier I don't see any way how this could fail in code too ... yes I know thats no guarantee it isn't there :-) 21:18 sapier I vague remember a similar problem months ago 21:22 VanessaE switching to a smaller size of HDX (e.g. 128px instead of my usual 256 px) or disabling it entirely is enough to get around the crash, if that tells you anything at all. 21:22 celeron55 so is valgrind impossible? 21:22 VanessaE and earlier 256px with preload item visuals turned *ON* also worked. 21:22 VanessaE I have valgrind, but I don't have a clue how to use it 21:22 VanessaE (haven't had a chance to research) 21:22 sapier does that strange png warning occur with smaller textures too? 21:22 celeron55 well, "valgrind bin/minetest" 21:23 sapier just run valgrind minetest and post results 21:23 VanessaE oh just that? sure. 21:23 celeron55 valgrind is like magic... magic that burns infinite CPU 21:23 sapier be prepared to wait ... minetest will get really slow 21:23 VanessaE ok, off it goes. 21:24 celeron55 it makes everything about 50 times slower 8) 21:24 VanessaE heh 21:24 sapier imho 50 is average :) 21:24 sapier can be 100 too 21:25 VanessaE weird. under valgrind it's fine, if slow . 21:25 celeron55 it also consumes multiple times the amount of memory 21:25 ShadowNinja Can serialized node metadata contain nul? 21:26 sapier it doesn't crash within valgrind? 21:26 VanessaE sapier: nope. 21:26 celeron55 valgrind results in a slightly varied memory layout which maybe places the corruption in a more lucky place 21:27 sapier yes but it should warn anyway could you post the valgrind output somewhere? 21:27 VanessaE shall I quit from the program now? 21:27 sapier yes 21:27 celeron55 it doesn't know the "intention" of any memory access 21:27 VanessaE sapier: sure, sec. 21:28 celeron55 it can only check for segfaults and uninitialized memory, which won't happen in the "right" circumstances 21:28 sapier no it doesn't know intention but chance to acces somewhere beyond is way better than correct access 21:28 celeron55 it is, but it doesn't always happen; i have had many such experiences 21:28 sapier I know but it's a chance 21:30 sapier at least if you don't have a more promissing suggestion? 21:30 VanessaE waiting for gedit to capture the whole output from a second run... 21:30 sapier *g* 21:30 VanessaE "==26849== More than 1000 different errors detected. I'm not reporting any more." 21:30 VanessaE HA! 21:31 celeron55 if i was VanessaE, i would implement some kind of a global function that walks through and sanity-checks TextureSource's queue and abort()s if it's not valid, and call it basically absolutely everywhere in order to bisect where it gets corrupt 21:31 sapier another option is printf debugging (output of values) 21:32 sapier :-) sounds like something one of my collegues did .... just to realize memory handling is fine and a invalid destructor got called :-) 21:33 VanessaE (or I could just use the --log-file switch in valgrind, duh) 21:33 sapier vanessa is 256x texturepack only requirement? 21:33 celeron55 i debugged one thing at work with that kind of an approach... and in the end i found i didn't yet really understand what i should be searching for 8) 21:34 VanessaE sapier: seems that at present, either 256 or 512px will crash it, but 128 doesn't. 21:34 sapier it's quite normal ... just some days ago I did search a week for some communication handling error just to realize it was a obscure endianess bug 21:34 sapier ok I try to reproduce 21:35 VanessaE try other sizes also, if you can 21:35 VanessaE thing is: Realtest is mostly UNSUPPORTED in HDX. 21:35 VanessaE so why it even crashes at all, is a big mystery 21:36 sapier do I need to install realtest too? 21:36 VanessaE only, basically, the stuff from minetest_game default is found here. 21:36 VanessaE no, just connect to vanessae.mine.bz 30004 21:36 sapier first I need to find your texture pack 21:37 celeron55 it would be useful to poke memory in the core dump around where result.key and name are 21:37 VanessaE screenshot of the client running under valgrind, successfully: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/Screenshot%20-%2011122013%20-%2004:36:27%20PM.png 21:37 celeron55 using gdb 21:37 celeron55 like, just dump out some thousands of raw bytes 21:37 celeron55 the data going there might be identifiable 21:38 VanessaE good idea 21:38 celeron55 and... to do that, use: google 21:38 sapier I'd first try errorstreaming key and name ... quick to do 21:38 celeron55 i bet nobody in this world remembers how to print out correctly formatted stuff in gdb 21:38 VanessaE ok, got it crashed in gdb. how do I do that memory dump? 21:38 VanessaE haha 21:38 VanessaE ok 21:39 * VanessaE googles 21:39 sfan5 PilzAdam would tell you to not use google now :P 21:40 VanessaE ok first I gotta find the address of the crash 21:40 VanessaE #2 0x00000000006ac080 in assert_fail (assertion=assertion@entry=0xb52dd6 "result.key == name", 21:40 VanessaE there? 21:41 sapier ok 256 isn't enough 21:41 sapier I used your photorealistic pack did you use another one? 21:42 VanessaE sapier: this one, https://github.com/VanessaE/hdx-256 21:45 sapier ok that's a different one 21:46 troller https://github.com/codetiger/IrrNacl https://developers.google.com/native-client/pnacl-preview/overview ... 21:49 celeron55 VanessaE: are you still at that gdb prompt? 21:49 VanessaE yes 21:49 VanessaE and the web is as cryptic as ever when it comes to telling a noob how to operate a program like gdb :P 21:50 celeron55 this is the best guide there is, but i'll tell you exactly what to do http://www.delorie.com/gnu/docs/gdb/gdb_56.html 21:50 VanessaE heh, I'm on that page now. 21:50 celeron55 so tell this to gdb: 21:50 celeron55 print result.key 21:50 celeron55 print name 21:50 celeron55 print &result.key 21:50 celeron55 print &name 21:50 celeron55 ...actually, leave those two later ones out 21:51 VanessaE http://pastebin.ubuntu.com/6407635/ 21:51 VanessaE um. ouch :) 21:51 celeron55 print result then 21:51 celeron55 -then 21:51 VanessaE (gdb) print result 21:51 VanessaE $2 = '\000' 21:51 celeron55 8) maybe i'll use some quotes 21:52 celeron55 gah, give me the backtrace 21:52 VanessaE coming right up. 21:52 VanessaE http://pastebin.ubuntu.com/6407647/ 21:52 sapier still not crashing ... I'm trying to connect to your server 21:54 sapier do I need to enable or disable preloading? 21:55 VanessaE disable. 21:55 celeron55 okay so for gdb: "frame 3" 21:55 celeron55 then try print result 21:56 VanessaE http://pastebin.ubuntu.com/6407668/ 21:56 celeron55 and "print name" 21:57 VanessaE (gdb) print name 21:57 VanessaE $4 = (const std::string &) @0x7fffe4a159f0: {static npos = , 21:57 VanessaE _M_dataplus = {> = {<__gnu_cxx::new_allocator> = {}, }, _M_p = 0x7fffd017d488 "default_torch_animated.png^[verticalframe:16:0"}} 21:57 VanessaE (those torch images have not been modified since June) 21:58 celeron55 okay so 21:58 sapier ok worksforme ... :-/ 21:59 celeron55 "default_torch_on_ceiling_animated.png^[verticalframe:16:0" <- result.key 21:59 celeron55 "default_torch_animated.png^[verticalframe:16:0" <- name 21:59 celeron55 so the string itself isn't borked but something where the string comes is 22:00 celeron55 and it's borked in some very fine way that doesn't break it completely 22:01 VanessaE can I break 'em or can't I? :) 22:01 sapier If I'd not know better I'd say wrong thing was returned 22:02 celeron55 seems quite impossible to debug this way 22:02 celeron55 we need a more blatant crash 22:03 celeron55 and a more early one 22:03 VanessaE "more blatant"...erm.. 22:03 VanessaE :) 22:04 sapier vanessa you do run this on linux? 22:04 VanessaE sapier: yep 22:04 sapier what distribution? 22:04 VanessaE Xubuntu 13.10 22:04 VanessaE (inb4 lol ubuntu sux) 22:04 sapier hmm a little bit more recent than by debian 22:04 sapier yet not that far away 22:05 sapier and you run with current master 22:05 VanessaE yep, this is a clean build, no extra patches. 22:05 celeron55 how about just plain git bisect? 22:05 celeron55 can't really know if something would pop up or not 22:06 VanessaE maybe I could dump the core and put that up for download. 22:06 sapier still doesn't crash for me :-/ 22:07 celeron55 it's not useful; it's probably practically impossible to dig through the std::list pointer structure to find out where in it is a problem if it's such a small difference 22:07 sapier maybe a texture queue trace would help 22:08 celeron55 VanessaE: gdb: "print m_get_texture_queue" 22:09 celeron55 also "print result_queue" 22:09 VanessaE ok. Starting from a fresh run. I need frame 3 again? 22:10 sapier yes 22:10 celeron55 yes, assuming the backtrace looks the same 22:10 VanessaE yep, seems the same. 22:10 VanessaE sec. 22:10 sapier celeron is there any special reason why this is done as mutex queue not as semaphore variant? except of jthread not supporting semaphore? 22:11 VanessaE http://pastebin.ubuntu.com/6407734/ 22:11 celeron55 the only reason for anything is that i did it with plain jthread 22:11 sapier ok because i implemented jsemaphore for async things ... i don't like thise active sleeping things 22:14 celeron55 remember to have the timeout there or some other means to let it quit on shutdown of the program without getting a result 22:15 celeron55 VanessaE: nothing obvious there; git bisect is your friend 8) 22:15 VanessaE bisect!? *shudder* 22:16 sapier or tell us more precise how to reproduce it ;-) 22:17 VanessaE sapier: what if I sent you my minetest binary? can you run an amd64 build? 22:17 sapier worth a try 22:17 VanessaE catch. 22:17 VanessaE 81 MB 22:18 sapier 81MB ... wooo 22:19 VanessaE this is built against luajit, leveldb, curl, and irrlicht 1.8 22:19 sapier ok chances this will run are minor 22:20 sapier no leveldb no irrlicht-1.8 and no luajit ... last on would be quite easy to fix others ... especialy irrlicht is a problem on debian 22:21 VanessaE lemme try rebuilding against 1.7.3 and without the others 22:22 celeron55 you could also try valgrind --tool=helgrind 22:22 celeron55 if it's a thread locking issue 22:23 celeron55 but i don't know what to expect from there 22:23 VanessaE hm, there's no cmake option to disable luajit? 22:24 celeron55 oh wow 22:24 celeron55 i tried helgrind and minetest crashed to SIGILL 22:24 VanessaE eek 22:25 celeron55 apparently helgrind didn't like luajit 8 22:25 celeron55 8)* 22:25 VanessaE heh 22:26 celeron55 and no, there doesn't seem to be a cmake option for luajit 22:27 VanessaE sapier: I had to cancel the dcc 22:28 sapier no problem most likely it wouldn't have run for me 22:28 VanessaE ok, I compiled against 1.7.3, no curl, no leveldb 22:28 sapier ok helgrinding now ... this is even more slow than normal valgrind :-) 22:28 VanessaE still getting the same crash 22:29 sapier ok if you send me this version chances it will run for me are better 22:29 VanessaE sure, sec. 22:30 VanessaE uploading it to my web space so both of you can grab it 22:30 VanessaE http://digitalaudioconcepts.com/vanessa/hobbies/minetest/minetest 22:34 * VanessaE attempts to bisect (been years since I did this last) 22:37 VanessaE you know what, screw it. I'm going all the way back to 0.4.0 and tracking this down once and for all :) 22:41 sapier sorry doesn't work I'm 3 glibc versions behind 22:45 VanessaE bummer. 22:46 sapier debian ;-) rock solid but outdated ;-) 22:46 VanessaE heh 22:49 sapier is there any special place on map maybe? 22:50 VanessaE over by my home, -366,36.-1215 22:50 VanessaE er -366,36,-1215 22:51 sapier ok no idea how to get there but I don't think this is a realistic reason too 22:52 VanessaE whoa, that's fucked up 22:53 VanessaE it does not crash if I load the same world in singleplayer 22:53 VanessaE (as in, cp -av /path/to/server ~/.minetest/worlds ) 22:53 sapier do you use a texture pack localy or download it? 22:53 VanessaE download? eh? 22:53 sapier ok so local :-) 22:53 VanessaE oh, you mean HDX? it's my local copy, symlinked from its usual storage dir into ~/.minetest/textures 22:54 VanessaE lrwxrwxrwx 1 vanessa vanessa 54 Nov 12 15:54 HDX-256px -> /home/vanessa/Minetest-related/texture-packs/HDX/256px 23:06 sapier vanessae enabling tile.cpp L 784 might help 23:06 VanessaE sec 23:07 VanessaE I'm redoing my system to clearly separate my servers' build tree from my local client. 23:07 VanessaE s/system/build system/ 23:13 sapier i hate templates 23:13 kaeza amen 23:20 sapier wait i think there is a generic problem in there 23:20 sapier Thread A requests texture and gets scheduled before doing pop_front 23:21 sapier hmm forget about it ... different queues 23:28 VanessaE ok, I cannot reproduce the crash if I load the map in singleplayer. 23:30 sapier my guess is a very very rare timing bug in our thread handling I don't have any idea what that callerdata/id thing is supposed to do maybe it's correct maybe not ... at least is seems to be the only thing that may be involved (except a generic memory access error) 23:30 sapier I'll have a closer look at this tomorrow 23:31 VanessaE fwiw I have not yet started that bisect. I'm making 100% sure I didn't break anything 23:33 ShadowNinja Thoughts? https://github.com/ShadowNinja/minetest/compare/sqlite_rollback 23:36 ShadowNinja VanessaE: Care to try that? :-) /rollback_check takes about 0.1s now on a old copy of my server rollback(7826433 entries). 23:36 VanessaE maybe later on after I come to some conclusion with this client bug 23:48 VanessaE ok, I purged every last minetest-related thing from my box (except backups and my servers' files), re-installed a server-only build, completely from scratch, with only shadow's pcall_errfunc patch. The servers are behaving normally. The client is a run-in-place build, 100% clean upstream, and is stored and run totally separate from the servers. It still crashes exactly as before. 23:51 VanessaE but that's only the client connecting to the server - I can't reproduce the crash when running the very same map in singleplayer. 23:58 VanessaE http://pastebin.ubuntu.com/6408110/