Time Nick Message 00:15 hmmmm est31: did you check out my patch? 00:45 hmmmm or anybody really 00:47 JohnnyComeL8ly Sorry, I'm a little behind. 01:19 luizrpgluiz someone has tested the modification of EST31? 01:19 JohnnyComeL8ly Where do I get it? 02:32 hmmmm bleh 02:33 hmmmm somebody on the mtgame side should've added a jack-o-lantern block for tonight :-) 02:33 hmmmm we never do these easter egg things, really ought to though 02:33 JohnnyComeL8ly Oh, boy... spooky. 02:33 hmmmm ermm... are you a developer? 02:34 JohnnyComeL8ly hmmmm, no. 02:34 JohnnyComeL8ly Doesn't stop me from being here, so I though. 02:34 JohnnyComeL8ly I don't interupt everybody else's thoughts. 02:34 hmmmm you seem to be a very active in discussion here 02:35 hmmmm very active participant* 03:12 paramat nore what's your opinion on game#665 ? just needs another -1 to close it 03:12 ShadowBot https://github.com/minetest/minetest_game/issues/665 -- Add many wooden fences made out of the 4 kinds of woods by LeMagnesium 03:14 paramat hmmmm i have an idea to add very simple optional lakes to flat mapgen, to provide water. just a single 2D noise, maybe even flat-bottom lakes too 03:14 hmmmm I don't know, at first glance I didn't like the idea of adding all these different kinds of wooden fences, that's totally mod material 03:15 hmmmm but then again I agree about having different kinds of wood with no use to them 03:16 hmmmm I can't help but feel like this is more of a minetest core issue, because this is a more fundamental problem where we have a group of nodes we'd like to make each with their own separate 'materials' 03:17 hmmmm paramat, isn't that the point of a "large cave"? 03:17 paramat ah yes 03:19 paramat it might be popular to have lakes though 03:20 paramat .. flat continents and islands for building 03:21 hmmmm well okay if you want it 03:21 paramat perhaps i'll experiment and see what people think 03:22 paramat 541 issues, amazing how they hang around in limbo 03:23 paramat i always feel like clearing most of them out 03:23 hmmmm so do i 03:23 hmmmm the fundamental problem is that they come faster than we can solve them 03:23 hmmmm i do like the satisfaction of solving an issue though 03:24 hmmmm paramat, did you look at the script lock fix?? i'm looking for somebody to review it 03:25 paramat ah i looked, i could test it but don't understand it 03:25 hmmmm it's okay i guess 03:25 hmmmm anyway I tried out nerzhul's clang 3.8 mapgen bug 03:25 hmmmm it's a problem with some kind of floating point optimization in -O2, i think it's a compile rbug 03:26 hmmmm i was flying across the map when all of a sudden my X and Z coordinates turned into "NaN", the map disappeared, and I started getting spammed with updateListener: invalid value in the console 03:26 paramat NyaN! 03:27 hmmmm this is going to be a treat to debug... 04:21 paramat #3324 04:21 ShadowBot https://github.com/minetest/minetest/issues/3324 -- Mapgen: Add watershed mapgen in hidden development form by paramat 05:24 hmmmm alright i narrowed down the main problem with the clang 3.7 bug 05:25 hmmmm basically clang decides that ANDing the result of an operand with 0x7FFFFFFF inside of noise2d() is optional 05:26 hmmmm interestingly I can't replicate the bug if I exclude everything except the expression 05:46 hmmmm alright I know the problem 05:47 hmmmm because of the " & 0x7fffffff" on the line where n is initially calculated, clang assumes that the value n will never go above 0x7fffffff, which is just flat out wrong 05:48 hmmmm if the first & 0x7fffffff is removed it doesn't change the calculation but now clang places the instruction where it's supposed to be, producing the correct result 05:51 hmmmm because integer *underflow* is undefined behavior in C 05:51 hmmmm so what does that mean, to clang developers? "let's fuck up as much existing code as possible" 08:20 celeron55 i have an idea for a game, but i am not sure whether to build it on minetest or whether to build it separately 08:22 celeron55 i think minetest should allow for making this (this is none of that space RTS bullshit), but this still might require too many changes to be feasible to make in time before i lose all motivation due to it taking too long 08:23 celeron55 this is a problem but i'm not sure if it can be solved 08:29 neoascetic hi everyone. isn't armor groups for each entity stored until server restart? 08:40 hmmmm celeron, do you feel like reviewing any of my commits? 08:40 hmmmm i really want to get some of this stuff in, i hate having too many unmerged branches 08:41 hmmmm alright I'm convinced gregorycu and zeno are the same person 08:41 gregorycu ? 08:41 gregorycu Hello 08:41 hmmmm they both go inactive and become active again at the same time 08:42 gregorycu But we were fighting 08:42 hmmmm :) 08:42 gregorycu were/are whatever 08:42 gregorycu What's happening? 08:42 hmmmm not much 08:42 hmmmm do you feel up to reviewing a commit or two or three? 08:43 hmmmm or how about four? even more? 08:43 gregorycu Haven't touched the code in like... 6 months... 08:43 hmmmm ahhh this is 2spooky4me 08:43 hmmmm you came back from the dead 08:43 gregorycu I thought you guys may be missing me too much, so I decided to come back 08:44 hmmmm happy halloween I guess 08:45 gregorycu Thanks, same to you 08:46 gregorycu Anything exciting been happening in the minetest world? 08:47 hmmmm we did nothing but fix bugs for almost an entire release cycle 08:50 gregorycu I was thinking of forking minetest, and adding python API bindings 08:50 gregorycu Just to see what they would be like 10:59 gregorycu Does 64 bit builds of minetest work? 10:59 gregorycu Or is that currently unsupported 11:04 Calinou gregorycu, they work? I use them on my laptop 11:04 gregorycu Sweet, thanks 11:04 gregorycu Trying to get minetest building again for me, struggling a bit 11:05 gregorycu Wanted to make sure it worked first :) 11:21 gregorycu What's the deal with SQLLite 11:22 gregorycu Is that meant to be build from within minetest, or are we meant to have an external lib that we link in 11:23 gregorycu There is a sqlite folder in src. But it appears files within that folder are not getting built 11:30 gregorycu I just copied the folder elsewhere and built it 11:36 gregorycu Anyway, yeah crash 11:36 gregorycu Not a good first impression 11:41 gregorycu I bet nobody develops of Visual Studio 11:41 Calinou only BlockMen and PilzAdam really do IIRC 11:42 PilzAdam what?! 11:42 PilzAdam I am deeply offended that you think I would use windows 11:43 Calinou I thought you were on Windows 11:43 gregorycu Anyway, some technically un-defined behaviour code is flagged on Visual studio 11:44 gregorycu But it's harmless 11:50 gregorycu Further to this, Visual Studio 11:50 gregorycu VS's implementation of std::vector is very very slow in debug 12:36 Megaf folks, is it possible to build the client without sqlite? I think that could be an option since I will be using the client only for online gaming 12:43 rom1504 online gaming doesn't use sqlite ? 12:53 Megaf I don't know, I don't think so, why would it? 12:53 Megaf sqlite is using to store map and rolback 12:54 rom1504 link? 12:56 Megaf my head? 13:03 ElectronLibre Megaf: SQLite is used if the client has enabled local map saving (using sqlite3 backend). I don't know if it's used for anything else by the client but you should keep it. 13:05 gregorycu Why do you want to build without it? 13:06 gregorycu Why do you want to build without it? 13:08 Megaf gregorycu: just to have a smaller binary and less compilation time 13:08 gregorycu Damn, you must have a pretty shitty computer if you can notice the difference in compile time 13:09 gregorycu (No offense) 13:09 Megaf shitty no, slow yes 13:09 Megaf Celeron M ULV at 900 MHz at the moment, 630 MHz most of the time 13:09 Megaf single core, 32 bit 13:09 Megaf single thread 13:12 gregorycu Yeah, took a look at the code 13:12 gregorycu Doesn't look like there is a way out 13:13 Megaf I could just quicly edit the src and remove sqlite stuff from there, and local map saving 13:13 gregorycu I mean, you could write your own sqlite which is noop 13:13 Megaf but I don't know if it's worht it 13:13 Megaf worth * 13:13 gregorycu Only one way to tell 13:14 gregorycu But it's like... what 13:14 gregorycu 6 functions or something 13:14 gregorycu Shouldn't really influence linking time much 13:14 gregorycu (Especially if you turn off linker code-gen) 15:02 celeron55 i think a reasonable way to enable wiki registrations could be to use a similar thing as what the forum is using, like https://www.mediawiki.org/wiki/Extension:StopForumSpam 15:02 celeron55 but i think i'm going to be lazy for the time being and not do that 16:05 celeron55 what the... 16:06 celeron55 i am getting a crash that looks dumb 16:07 gregorycu Not one of those smart crashes? 16:07 celeron55 this clearly is not smart 16:07 celeron55 https://gist.githubusercontent.com/celeron55/07146c806a344f0998df/raw/059463a2b73adfa972640770db3b22bc06f89665/gistfile1.txt 16:08 celeron55 it's overflowing the serializable range of values and the whole thing just aborts 16:09 celeron55 ...due to a position that could just be capped or reset or anything without any issue 16:11 gregorycu It's all beyond me, I'm going to go back to profiling 16:11 celeron55 of all the things imaginable, this is crashing due to an absolute velocity being higher than 200,000 nodes per second 16:11 nrzkt hmmmm, thanks for finding the bug with clang. Did you fixed it ? 16:11 celeron55 or, well, 2147483 16:11 celeron55 or, well, 214748.3 16:12 hmmmm yes, I'm just waiting for reviews 16:13 VanessaE why isn't velocity being capped at some reasonable value? (like mach 1 or something -- 340.3 m/s) 16:13 gregorycu I think c would be better 16:13 gregorycu More realistic 16:13 VanessaE heh 16:13 VanessaE that would require 300,000 km/s 16:14 hmmmm celeron55: maybe you should fix the code trying to serialize a NaN 16:14 celeron55 well we can't serialize values over about a thousandth of light speed 16:14 celeron55 wait, is it a NaN 16:14 hmmmm it says "i=-NaN" 16:14 hmmmm if that assert hadn't been there, you would've never known 16:17 gregorycu By the way, you know what is slow. Using a vector as a queue 16:17 hmmmm who's doing that? 16:17 gregorycu ProfilerGraphs 16:18 hmmmm ahh 16:18 hmmmm no idea who might've made that mistake 16:18 celeron55 lol, quality code by the almighty celeron55 16:18 gregorycu lol 16:19 celeron55 it's fine; ship it 16:20 gregorycu It's 10x faster as a deque 16:20 celeron55 it's a pretty cold code path though 16:21 gregorycu It was still 8% of my debug build 16:21 celeron55 one realloc per frame is nothing 16:21 gregorycu (I'm profiling release now) 16:21 gregorycu It's not a realloc 16:21 gregorycu It's a realloc and a shuffle 16:21 celeron55 ...oh, except it's C++ and that means it's something ridiculous 16:21 gregorycu A shuffle of maps 16:26 gregorycu http://s23.postimg.org/7qrpmopaj/profile.gif 16:26 gregorycu Not really much in release, still more than it needs to be 16:27 hmmmm https://github.com/kwolekr/minetest/commits/master PTAL 16:28 sfan5 looks good 16:28 hmmmm ok pushing 16:28 gregorycu "Fix C++11 compatibility" 16:29 hmmmm wrong commit 16:29 gregorycu So, is minetest going to C++11, or is it just a supported config 16:29 hmmmm it's just a supported config for now 16:29 hmmmm none of us actually use C++11 16:29 gregorycu ahh ok 16:32 Krock Thanks god no-one uses C++11 yet :D 16:32 hmmmm https://github.com/kwolekr/minetest/commit/52e5b513ed9dc143c967c733423fe751e1b663d1 PTAL 16:33 hmmmm Krock: It's okay, it works fine 16:33 hmmmm freeminer does iirc 16:33 Krock hmmmm, the thing is more like I'd need to lean how to use MinGW on windows cuz VC 2012 doesn't support Win 5.1 16:33 Krock *learn 16:34 hmmmm 5.1 as in Windows XP? 16:34 Krock Yes 16:34 hmmmm it does... 16:34 hmmmm you just need to add a manifest file 16:34 gregorycu I use C++11 at work. Works fine. 16:34 hmmmm or, not even, there's a certain compile option you need I forget 16:34 hmmmm let me check my VS install 16:36 hmmmm Krock: go to the minetest Property pages, Configuraiton Properties -> General -> Platform Toolset 16:36 hmmmm change it to "Visual Studio 2012 - Windows XP (v120_xp)" 16:37 celeron55 https://gist.githubusercontent.com/celeron55/a91cbbe7fec054962f2b/raw/eb0cbcd9bd3c5956038eac0d5e634291e0a80af5/gistfile1.txt 16:37 celeron55 WTF? 16:38 hmmmm you should be using -O0 16:38 celeron55 maybe -nan(0x400000) isn't a valid value also, but is there no error if it isn't? 16:39 hmmmm pretty sure there's no error 16:39 hmmmm FWIW i've seen the player's coordinates to jump to nan when compiled under clang 3.7 16:40 Krock hmmmm, but for this I'd need VS2012, which doesn't have Win XP on its stupported list 16:40 Krock *supported 16:40 hmmmm Krock: You sure?? 16:40 Krock screenshot coming in 30s 16:40 hmmmm Krock: I'm just saying I compile things for windows XP on vs2012 16:40 est31 Microsoft hasn't Win XP on its supported list anymore at all. 16:41 Krock hmmmm, yes. Ironically this works, but not on WinXP itself 16:41 hmmmm ohhh 16:41 hmmmm i didn't understand what you meant 16:41 hmmmm why would you use windows XP as a build host? 16:41 Krock Cuz it's the system I got here :) 16:42 hmmmm I would suggest you stick with a recent version of VS to compile, otherwise you're giving up many great bugfixes and optimizations 16:42 hmmmm est31: https://github.com/kwolekr/minetest/commit/52e5b513ed9dc143c967c733423fe751e1b663d1 did you look at this yet? 16:43 est31 hmmmm, what exactly is the problem here 16:44 hmmmm it says in the commit message 16:44 est31 second, what are recursiv mutexes for you 16:44 est31 bc what I googled wasn't consistent with how you used them 16:44 hmmmm recursive mutexes are simply mutexes you're allowed to re-enter within the same thread 16:45 est31 aha 16:45 hmmmm did you see this? https://github.com/kwolekr/minetest/commit/52e5b513ed9dc143c967c733423fe751e1b663d1#diff-5962b617a85e4277ae7c8e57e8b6d38aL56 16:45 est31 well that would make sesne 16:45 est31 sense* 16:46 est31 to fix a deadlock I mean 16:46 hmmmm if you fix that one line alone, then scriptlock will start working, but then you have a deadlock issue because you can't control the re-entry of scriptapi functions 16:46 est31 why is giving it a name making it work? 16:47 hmmmm because Foobar(blah) is a temporary object 16:47 hmmmm it is destroyed before the next semicolon 16:47 est31 oh ok 16:47 hmmmm Foobar foo(blah) is a scoped, local object 16:47 gregorycu Wow 16:47 hmmmm it is destroyed when execution reaches the end of the current scope 16:47 gregorycu That is some very horrible code you fixed 16:47 hmmmm ty 16:47 Krock http://i.imgur.com/8xAdkWB.png 16:48 hmmmm so basically ever since sapier did the lua api refactoring, the script has been running with effectively zero synchronization 16:48 gregorycu lol 16:48 celeron55 looks like what is happening in here is that NaN is directly set as the velocity of the object by some crappy Lua code 16:48 hmmmm since the lock is acquired and released on the same line 16:48 gregorycu It's _almost_ a no-op 16:48 hmmmm it just so happens by coincidence that envlock was always held where it needed to be too, so we didn't see a bug 16:48 celeron55 i don't think this should be left to be catched by the serialization code 8) 16:49 gregorycu Just introduces a memory barrier 16:49 est31 yea there is no real layer between lua code and serialisation code 16:49 est31 unfortunately 16:49 est31 we really need such a layer though, e.g. when physics is calculated already due to the F1000 limits 16:49 celeron55 i mean i need to add a check for this to the lua-to-c++ interface 16:49 est31 so e.g. we should cut the objects position on the world border 16:51 celeron55 hmm 16:51 est31 a check there would be ok as well 16:51 celeron55 maybe this should be checked in the common check_v3f() function 16:51 celeron55 for NaN, that is 16:51 gregorycu Krock: The v120_xp target is because with v120, MS dropped support for XP 16:51 celeron55 because i don't think we ever want NaN anywhere 16:51 est31 yea I cant think of an usecase that needs NaN 16:51 gregorycu Then they added it back, under a different target 16:52 gregorycu Those toolsets under 120 should already support XP 16:52 est31 also, make it check for F1000 limits 16:53 est31 then at least lua can't "poison" us directly 16:54 est31 but the problem with that ofc is, what happens on check_v3f? 16:54 est31 it gives a LuaError right? 16:55 est31 so basically no other way for lua code that wants to be on the safe side than to replicate the checking code before calling the method, no? 16:55 est31 e.g. have user enter sth 16:55 est31 the old bug was /area_pos1 999999999999, 0,0 16:55 est31 or so 16:56 est31 was above F1000 limit, so would lead to direct crash 16:56 est31 then I fixed it by checking the position in the code to spawn entities 16:56 est31 if the entity is outside the world border it doesnt get added 16:56 est31 but no error with a stacktrace 16:57 est31 this way lua can nicely say "sorry but the minetest engine didn't like the coordinates you entered" 16:58 est31 instead of crashing 16:58 est31 it still has to check the returned object pointer for nil 16:59 hmmmm soo any word on 52e5b51? 17:00 est31 added a pointless comment 17:00 hmmmm oh I'm going to change the name of that variable in an upcoming commit 17:01 hmmmm not because it "needs underscores" but because it's misleading 17:01 hmmmm that's a mutex on the lua state, there are multiple lua stacks associated with a single state 17:01 hmmmm so calling it a stack mutex is simply wrong and misleading... in fact it's confused people before 17:02 est31 ah you don't add it in the commit 17:02 est31 yea and the second thing is that it is called mutex but its aa bool 17:02 celeron55 est31: i don't think checking f1000 limits universally in check_v3f is wise 17:03 celeron55 they don't apply to everything, and even if they do, some of them apply with *BS and some with *1 8) 17:03 celeron55 this is a mess for sure but... 17:05 est31 well, then no check 17:05 est31 only for NaN 17:06 celeron55 at least we know it's a mess 17:06 est31 but still, if we check in check_v3f then we change the float type 17:06 est31 and changing types is big business 17:07 est31 basically we say what is allowed to be called float 17:07 est31 and what not 17:07 celeron55 yes; but a known fact is that NaN will mess things up pretty hard almost always and is not part of the API in any other way than implicitly due to the languages used 17:18 celeron55 why am i not getting a backtrace when i throw a LuaError? 17:18 est31 because you have builtin lua 17:18 est31 dunno why it has no backtrace 17:18 est31 luajit has backtrace 17:18 hmmmm because script_execution_wrapper() is unavailable on vanilla lua 17:19 celeron55 this is dumb 17:19 celeron55 there was a backtrace previously 17:19 celeron55 how can anyone pretend this regression is okay 17:20 est31 how did it work back then 17:20 est31 dunno who introduced the regression 17:20 celeron55 how can i remember but it generally did work; now where's the commit that breaks this? 17:21 est31 bisect :) 17:21 celeron55 this is stupid; i should not need to fix stuff like this 17:21 est31 but my guess is it didn't break in 2015 17:22 celeron55 my guess is this broke in the past few months 17:22 hmmmm ehh, no, it was broken for quite a long time 17:23 celeron55 it *is* broken 17:23 celeron55 i sure hope the backtrace-printing function is still somewhere to be found so that i can just call it 17:24 hmmmm well, okay 17:24 hmmmm script_error_handler is the global lua error handling function 17:24 hmmmm lua_pcall encounters a runtime error, executes this function, which grabs a backtrace from debug.traceback and leaves it as the top element of the lua stack 17:25 hmmmm lua_pcall returns non-zero, so therefore ScriptApiBase::scriptError() is called 17:25 hmmmm if the top element is convertible to a string, that's used as the exception description 17:26 hmmmm so the conclusion is that for some reason, lua is either not calling the error handling function or debug.traceback isn't producing a string ..? 17:38 celeron55 is this due to the different handling of C++ exceptions between Lua and Luajit? 17:38 celeron55 somebody made backtraces only work in luajit? 17:38 celeron55 i repeat: this is dumb; why do i have to be doing this 17:40 hmmmm because you're practically the only person not using luajit 17:40 celeron55 lua is a fine piece of software for general debugging 17:41 celeron55 for one, valgrind can run it 17:41 est31 the only time I use normal lua is when I do valgrind stuff 17:41 est31 when Im done I rebuild with luaJIT 17:41 celeron55 from now on: do not touch Lua error handling without testing with lua and luajit 17:42 PilzAdam I use normal Lua, to check if everything still works reasonable with it 17:42 celeron55 both are supported 17:42 est31 we had an "error in error handling" bug, it was there for ages 17:43 est31 then ka hrl found the reason and fixed it 17:48 hmmmm i still don't quite understand how it was fixed 17:48 hmmmm the one instance where the error in error handling was after a regular runtime error, but the second where there was no associated runtime error was more interesting 17:49 est31 #1423 17:49 ShadowBot https://github.com/minetest/minetest/issues/1423 -- ServerError: error in error handling 17:49 est31 writeup there https://github.com/minetest/minetest/issues/1423#issuecomment-134472243 17:51 hmmmm so you're saying it's caused by an assert failing inside of the nested runtime error handler 17:52 est31 no 17:52 est31 the assert was only to confirm the theory 17:53 hmmmm but that theory doesn't explain the second interesting case 17:53 celeron55 i will have a few commits ready after some minutes 17:58 celeron55 https://github.com/celeron55/minetest/commit/1fcea9112b7f5fef520434ec2ae5269ea8864242 17:58 celeron55 https://github.com/celeron55/minetest/commit/deda3a9e4479abb96dbcd9afa32d78bc9b45c38f 17:58 celeron55 lua and luajit behaved exactly the same in this case 17:58 est31 ? 17:59 celeron55 i.e. minetest didn't print a backtrace with either 17:59 celeron55 now it does with both 18:00 est31 it did print a backtrace for a LuaError 18:00 est31 at least on luajit 18:00 est31 how did you test 18:00 celeron55 well try the first commit and see 18:00 hmmmm yeah, the second commit doesn't actually solve the problem... 18:00 hmmmm I'm sort of disappointed 18:00 celeron55 my test case is just a misbehaving game that for some unknown reason passes NaNs to ObjectRef::setvelocity() 18:01 celeron55 solve what problem? if you have a problem, why do you expect it to be the same problem that i have 18:04 celeron55 what i wanted to see is if this system is able to print any backtraces anymore and with that little code, it is; and it seems that the LuaError thrown by my added checks is being directly handled by that exception handler in ServerThread::run() so that's where i needed the backtrace 18:04 est31 LuaErrors do print a stacktrace for me 18:05 est31 I just confirmed 18:05 hmmmm sure, it fixes the immediate problem you have, but it's a hacky solution to be honest 18:05 celeron55 i'm not pushing this upstream if you happen expect that 18:05 celeron55 +to 18:05 celeron55 est31: where did you invoke one? 18:05 hmmmm of course not. I didn't really expect you to, it's just that somebody else here might do it without asking 18:05 est31 Add print("The object is: " .. dump(minetest.get_mapgen_object("voxelmanip"))) to init.lua 18:06 celeron55 there are many c++-to-lua interfaces in this thing and for some reason they are different 18:06 est31 should throw a LuaError if the commit d69ef6acd386ccfd5ff456002591b97b92a26956 is included 18:06 celeron55 for example script/cpp_api/s_entity.cpp and script/cpp_api/s_env.cpp handle errors differently 18:07 celeron55 this error that i added is thrown when ScriptApiEntity::luaentity_Step is being executed 18:09 celeron55 est31: that error comes through a different path 18:09 celeron55 it doesn't even touch the LuaError handler in ServerThread::run() where I had to add this 18:10 celeron55 same thing if you add that line in the global step callback 18:11 est31 okay, it should run inside a chatcommand, shouldnt it 18:12 est31 bc in theory, the chat command bases on an incoming chat packet 18:12 est31 which is handled by m_server-Receive(); 18:13 celeron55 wait, actually 18:13 * est31 testing 18:13 celeron55 luajit does print a backtrace for LuaErrors in ScriptApiEntity::luaentity_Step 18:13 celeron55 but lua does not 18:14 celeron55 yes, that's the issue here; i just confirmed 18:14 est31 okay what about surrounding it with if USE_LUAJIT 18:15 est31 or USE_LUA_JIT 18:15 est31 dunno, perhaps ShadowNinja has changed it 18:16 celeron55 oh so the way LuaJIT handles exceptions is that it calls this 18:16 celeron55 script_exception_wrapper 18:16 celeron55 well regular lua handles exceptions like you had called regular C++ code 18:17 celeron55 the lua stuff just rewinds out of the way like any code would 18:17 celeron55 which the JITted stuff is unable to do i guess then 18:18 est31 I think it is able to do it 18:19 celeron55 i think it was long our problem that we didn't print out backtraces for exceptions when luajit was used 18:19 celeron55 which i guess was because nobody had found that script_exception_wrapper thing for luajit 18:20 est31 http://luajit.org/extensions.html scroll down there you find, its platform dependent support 18:21 est31 perhaps a few years ago there was no support 18:21 est31 now there is partial support 18:21 celeron55 why is script_exception_wrapper then used? 18:22 celeron55 well i guess for x86 support 18:22 est31 to work on the platforms luajit doesn'T support? just a wild guess though 18:24 celeron55 the thing is, there is no way to integrate this neatly; exceptions have to be catched where exceptions occur and there is no way around it 18:25 celeron55 i.e. in every thread there must be a catch(LuaError) with a call to augment it with a backtrace if lua is being used 18:26 celeron55 well, every thread that runs lua, that is 18:26 est31 makes sense 18:26 celeron55 luajit errors are also converted to LuaErrors and need the same handler 18:27 est31 but there we get the stack trace from the handler func, so we don't need to generate it again 18:27 celeron55 but they already include the backtrace because... i guess luajit calls the regular error handling mechanisms before that 18:45 paramat hi nore what's your opinion on game#665 ? 18:45 ShadowBot https://github.com/minetest/minetest_game/issues/665 -- Add many wooden fences made out of the 4 kinds of woods by LeMagnesium 18:47 celeron55 i'll try to come up with a reasonable way to do this 18:48 paramat hmmmm #3324 is ready for review 18:48 ShadowBot https://github.com/minetest/minetest/issues/3324 -- Mapgen: Add watershed mapgen in hidden development form by paramat 18:48 hmmmm ok, i'll have to take a look 18:49 hmmmm in any case... 18:49 hmmmm committing https://github.com/kwolekr/minetest/commit/52e5b513ed9dc143c967c733423fe751e1b663d1 in 30 minutes unless anybody has an objection 18:49 est31 okay for me but isnt this too large for the 30 mins thing 18:49 hmmmm :| 18:49 hmmmm I'm really getting tired of waiting around 18:49 est31 (okay for me as in +1) 18:49 paramat we don't have pumpkins but could have cact-o-lanterns =} 18:50 hmmmm speaking of waiting around 18:50 hmmmm est31, why are you still waiting on the ncurses console PR? 18:50 hmmmm what is the holdup precisely 18:50 est31 approval missing 18:50 hmmmm oh my god 18:50 est31 or has kahrl +1ed 18:50 hmmmm we had 3 or 4 separate people look at it 18:50 hmmmm why does it have only 1 +1 18:50 hmmmm maybe kahrl did +1 18:54 hmmmm anyway I want to commit https://github.com/celeron55/minetest/commit/1fcea9112b7f5fef520434ec2ae5269ea8864242 but there are a couple issues holding it back imho 18:55 hmmmm celeron said he doesn't intend for this to be committed upstream, so I'm assuming this implies he's not willing to do any additional work/changes 18:55 hmmmm does somebody want to make a new PR with the functional changes or modify this commit? 18:57 celeron55 oh that one 18:58 celeron55 i think that commit is pretty much fine unless someone wants to tweak the style first 18:58 hmmmm first off, if there's already a function provided by the standard to do something, you need to use that instead of redefining it 18:58 hmmmm so util_isnan -> isnan 18:58 celeron55 i've had issues trying to use isnan in the past 18:58 hmmmm second, there's a lot of repetition 18:59 hmmmm if there is a problem with isnan, then make a comment about it 18:59 hmmmm / Here I defined my own util_isnan() because there are the following problems with the standard library's isnan() on platforms X Y Z: ... 18:59 hmmmm //* 19:00 celeron55 bleh; just edit it however you see fit; i don't even remember what the issues were anymore nor on which platforms i was trying to run code back then 19:00 celeron55 so i'm just as good as you 19:00 hmmmm well now you have me worried 19:00 celeron55 i'll be wrestling with this other issue now, i'll come back to that later 19:02 celeron55 one sure-fire way to find out is to just commit it using isnan or std::isnan and see what happens 8) 19:03 hmmmm oh god: https://github.com/opal/opal/issues/941 19:03 hmmmm remind me to lock and perma-delete any issues like this that pops up on our github 19:04 celeron55 don't worry, i'll lock and perma-delete them myself if i see them 19:04 celeron55 those people are utterly crazy, why would they even attempt to discuss that 19:05 hmmmm they try to be the bigger person and discuss things on their merit. i don't think they realized it's like playing chess with pidgeons 19:09 celeron55 when discussing on the internet, it's very important to realize when you are playing chess with pidgeons 19:16 celeron55 somebody needs to do a grep 'MutexAutoLock(' on the whole codebase and fix all those mess-ups 19:17 hmmmm oh fuck 19:17 celeron55 that's always a bug unless it's prefixed with "new" 19:17 hmmmm great job est, you did the same thing with getTimeOfDay 19:18 celeron55 maybe we should have a static checker that would check trivialities like this 19:18 hmmmm it's a time investment 19:19 celeron55 it would make sense if there were like more than five things to check 19:19 celeron55 CI likes such things 19:20 est31 isnt new a leak? 19:20 celeron55 a leak? well it's a heap allocation 19:20 celeron55 it's not how you fix those 19:20 hmmmm in fact I don't recall reviewing the timeOfDay patch 19:21 hmmmm who exactly signed off on ca8e56c 19:23 celeron55 looks like nobody 19:23 celeron55 https://github.com/minetest/minetest/pull/3297 19:23 hmmmm so est looks like he further propogated the error 19:23 hmmmm and same with nerzhul here https://github.com/minetest/minetest/commit/7f8f9785d7e9e120a6708d2f51e32dfef3e50c19 19:23 est31 I've just renamed 19:23 hmmmm no, I see you added some 19:24 est31 well its wrog fine should i fix it 19:24 hmmmm who is this first one to introduce this horrifying mistake 19:25 hmmmm https://github.com/minetest/minetest/commit/f6fc39e69a0a621480bec9ceafd154ec83cf0100 19:25 hmmmm fuckin sapier dude 19:25 hmmmm he sure "fixed" that race condition 19:25 hmmmm do you see why we need review 19:25 hmmmm competence also helps a lot 19:26 celeron55 looks like it's our lovely friend sapier 19:26 celeron55 in f6fc39e6 19:26 celeron55 "fix race condition" lol 19:26 rubenwardy capped under c, not at. physical bodies can't move at c 19:26 celeron55 i have learned to love commits that start with "Fix" 19:26 rubenwardy oops 19:26 celeron55 it generally means it's more like a regression than a fix 19:26 rubenwardy that was ages ago, my log was scrolled up 19:28 hmmmm look I get that we're not writing flight control software here but it doesn't hurt to make sure things work 19:34 hmmmm I think the fix for this should replace the locking with atomics, since, you know, we have that now 19:35 nrzkt hmmmm, tested in a branch std::atomic is working well 19:39 est31 I still think atomics wont work for tim 19:39 est31 time 19:39 est31 bc the calculations are too complex 19:39 est31 its not just simple get -> add -> put back 19:39 est31 there are multiple variables 19:40 est31 and e.g. setting time + step could confuse 19:40 est31 but I dont really care if it gives wrong time then so be it, its just time 19:40 est31 nothing important 19:40 est31 as long as it doesnt crash or so 19:40 celeron55 https://github.com/celeron55/minetest/commit/54af0cbc96a308a6eb5400bdddda71e66bb082f8 19:42 est31 looks good 19:42 celeron55 if somebody would care to test this, that would be nice 19:42 est31 havent given it a too close look though 19:43 celeron55 (which is, find a case where without this there was not a backtrace with regular Lua and see what happens when this is applied) 19:44 celeron55 i'm doing some testing myself but it's never the same to test something yourself as it is for someone else to test it 21:23 hmmmm hmm 21:24 hmmmm clang 3.8 does something with floating point numbers in collisionMoveSimple that makes the player freeze up 21:39 hmmmm seems to happen when one of the parameters becomes -0.0 21:44 celeron55 what happens if you toggle some math-related flags of the compiler 21:44 hmmmm no idea, i'm trying to find the source of the problem firstg 21:51 hmmmm this is infuriating 21:51 hmmmm i need to be able to debug more than ever but i can't debug at all because it needs to be optimized 21:51 celeron55 uh wtf 21:52 celeron55 why does the command line interface of minetest have timestamps and thread information prepended on each line? 21:52 celeron55 this is bad style and useless 21:52 hmmmm because shadowninja thought it was cleaner that way 21:52 celeron55 well what the fuck; i explicitly made it NOT this way because this is crap 21:53 celeron55 sigh 21:53 hmmmm fwiw i fought back against it and ended up losing 21:53 hmmmm :| 21:53 celeron55 why am i letting ShadowNinja change this 21:53 celeron55 i should just make everyone have their own fork of minetest again 21:54 hmmmm any time there's a commit that starts with the word "Cleanup" you can rest assured it's going to have tons of unpopular changes as riders 21:59 celeron55 i guess my hobby has become reversing stupid changes in minetest 21:59 celeron55 reverting* 22:00 celeron55 (i'm also good at writing slightly incorrect english) 22:00 hmmmm since when is a typo incorrect english? 22:01 celeron55 that's not a typo 22:03 celeron55 it seems that the only thing in minetest that gives direct responses to command line arguments is --help 22:04 celeron55 so it's the only thing that has to be printed to std::cout and nothing else 22:04 celeron55 oh, no; "--world list" also 22:05 celeron55 ...aand --version 22:06 celeron55 and --gameid list 22:07 hmmmm STFU and fix it then :-) 22:07 hmmmm better yet; complain to ShadowNinja 22:07 celeron55 i think that's all; i already changed them locally, now i only need to commit this 22:07 hmmmm he's the one making all the "Cleanup" commits 22:07 hmmmm 3000 lines changed, 71 files 22:08 hmmmm okay bbl 22:08 celeron55 i think i'll be an asshole and just push this to upstream 22:13 est31 I guess it'll conflict my ncurses branch but i'll just rebase 22:15 est31 and 5 bugs introduced 22:16 celeron55 http://stackoverflow.com/questions/2249110/how-do-i-make-a-portable-isnan-isinf-function 22:16 celeron55 this is the thing that i was concerned about in using isnan() 22:16 est31 lets use boost 22:17 celeron55 lol 22:17 est31 gregorycu will like it 22:17 celeron55 std::isnan is what i have been personally using in other projects 22:17 celeron55 it seems to be the best bet but i think it's officially c++11?! 22:18 celeron55 overally even bothering to think about this is stupid; that's why i just made a macro 22:19 celeron55 i guess i'll add a comment noting this issue and then somebody can handle it some day if it really matters 22:21 celeron55 (it doesn't; but whatever) 22:29 PilzAdam celeron55, can also revert the behavior that debug.txt is created in the current directory, rather then in bin? 22:29 PilzAdam (for RUN_IN_PLACE) 22:29 PilzAdam basically every folder on my machine contains a debug.txt now since I start minetest from random places 22:31 celeron55 eh 22:31 celeron55 why was that done? 22:32 PilzAdam because "cleanup" by ShadowNinja 22:32 PilzAdam apparently "cleanup" means change lots of functionality, I guess? 22:32 celeron55 well fuck cleanup by shadowninja, why is that even a thing 22:33 celeron55 why aren't you opposing these things 22:34 celeron55 i have to say though that so far i haven't had any issues with this debug.txt positioning; but i didn't have any issues with the previous way either 22:34 PilzAdam well, 80% of it is good refactoring 22:34 est31 70% 22:34 PilzAdam but nobody can test all stuff and see if it changes functionality 22:34 est31 there is bad refactoring too 22:35 celeron55 why don't you change them back then when you find them 22:35 est31 usually thats done 22:35 PilzAdam nobody care enough, I guess 22:35 celeron55 i'm going to leave that to PilzAdam; i don't personally care about this one 22:37 PilzAdam I think the problem is that ShadowNinja writes these huge changes completely alone without notifying people beforehand 22:38 celeron55 i'm guessing the refactoring is mostly good but people have to be attentive about these things 22:38 est31 and some of his cleanups really are questionable 22:38 PilzAdam they are hard to review, but also hard to change since ShadowNinja already invested a lot of work 22:38 est31 e.g. he removes an id management function 22:38 est31 because i guess its "too complicated" 22:38 celeron55 what 22:38 est31 the replacement however doesnt even handle overflows 22:39 est31 but fortunately he fixed it 22:39 kahrl celeron55: I think you missed --videomodes 22:39 PilzAdam maybe we should create some rules that refactoring commits should only do refactoring 22:39 est31 #3309 22:39 ShadowBot https://github.com/minetest/minetest/issues/3309 -- AreaStore cleanup by ShadowNinja 22:39 celeron55 PilzAdam: maybe, just maybe that rule is common sense? 22:39 est31 The PR title is a bit misleading, its not just cleanup, it also changes features 22:39 celeron55 can all of us agree that refactoring being only refactoring is common sense? 22:44 celeron55 i think this area stuff isn't as bad as est31 makes it sound like 22:45 celeron55 altough, that's no reason to not continue reviewing it 22:47 celeron55 kahrl: i'm not going to touch it because it's implemented in such a weird place 22:48 celeron55 for no good reason, too 22:50 kahrl true 22:51 kahrl it causes a separator to be added to debug.txt when you list videomodes 22:51 kahrl (even when you change dstream to std::cout) 22:56 kahrl ugh 22:56 kahrl print_video_modes uses stuff from g_settings, which is initialized during init_common which also initializes logging 22:56 kahrl so what I said is basically unavoidable 23:01 kahrl I'd just do https://gist.github.com/kahrl/6686521d7decf1f43ac0 and call it done 23:01 kahrl will merge ^ in an hour 23:02 celeron55 oh whatever, it's not like this is worth our time at all to begin with 23:02 est31 btw kahrl have you tested my console yet 23:02 kahrl est31: nah, didn't have time yet 23:06 JohnnyComeL8ly est31: I tried to try your ncurses console... but I got these errors. 23:06 JohnnyComeL8ly http://pastie.org/10521270 23:06 JohnnyComeL8ly http://pastie.org/10523110 23:07 JohnnyComeL8ly If you need a whole output of the thing, I could definitely do that too. 23:07 est31 yes I need the whole output 23:07 est31 the first thing is unrelated 23:09 JohnnyComeL8ly est31: Oh, ok, well here it is. http://pastie.org/10523120 23:13 kahrl JohnnyComeL8ly: what's the linker command line? You can see it with: make VERBOSE=1 23:13 kahrl (below the line "Linking CXX executable ../bin/minetestserver") 23:14 est31 JohnnyComeL8ly, which distro are you on 23:14 JohnnyComeL8ly est31: I'm using Xubuntu 15.10. 23:17 JohnnyComeL8ly http://pastie.org/10523133 23:18 JohnnyComeL8ly kahrl: est31: ^^ 23:18 est31 It should link to libncursesw instead of libncurses 23:19 est31 JohnnyComeL8ly, can you fork again and recompile? 23:19 JohnnyComeL8ly So, I need to install that? 23:19 JohnnyComeL8ly "fork" ? 23:19 est31 no, ncursesw comes with ncurses these days 23:19 est31 ermm clone 23:19 JohnnyComeL8ly I don't know where to clone from... and I don't know how to just get branches. 23:20 est31 well, delete the minetest directory and get the source code again 23:20 est31 have you tried that 23:20 JohnnyComeL8ly (I tried yesterday... ended up getting the archive from github.) 23:20 JohnnyComeL8ly I'll use the same archive. 23:24 kahrl JohnnyComeL8ly: what's the output of 'ncurses5-config --libs'? 23:24 kahrl JohnnyComeL8ly: and 'ncursesw5-config --libs'? 23:25 JohnnyComeL8ly Just a sec. 23:27 JohnnyComeL8ly -lncurses -ltinfo and -lncursesw -ltinfo respectively. 23:27 kahrl ah ok 23:27 kahrl I think it would work if the cmake module FindCurses.cmake (which comes with cmake) was used 23:30 JohnnyComeL8ly I'm going to try without telling them where they are. 23:31 kahrl ah no, FindCurses.cmake doesn't do ncursesw 23:31 kahrl est31: would it be possible to use ncurses instead of ncursesw? 23:32 JohnnyComeL8ly So, I need to do what? 23:32 * est31 is german, no way to not let me write äüöß 23:32 kahrl est31: utf-8? 23:32 est31 insert not 23:32 JohnnyComeL8ly I just finished installing libncursesw5-dev if that helps. 23:33 kahrl JohnnyComeL8ly: your system is fine, minetest's CMakeLists.txt is broken 23:33 JohnnyComeL8ly How do I fix it? 23:33 kahrl not sure yet 23:36 JohnnyComeL8ly Hehey! installing libncursesw5-dev made the trip! I didn't have to specify the location of ncursesw. 23:38 kahrl hrmm, that's weird 23:38 kahrl build is always weird 23:40 JohnnyComeL8ly That is something to take note of... that way nobody else has to figure out (by chance) that libncursesw5-dev is necessary. 23:42 kahrl that's not the solution; the solution is to fix CMakeLists.txt 23:42 JohnnyComeL8ly Ah, yes; you are right. 23:43 kahrl at the moment it's broken. The correct thing that it should is: either (a) determine that ncurses can't be used, or (b) determine that it can be used, in which case the linking command must not fail 23:43 kahrl that it should do 23:43 est31 agreed 23:44 JohnnyComeL8ly So, something like line 58 of the CMakeLists.txt should be in place to check for libncursesw5-dev ? 23:45 JohnnyComeL8ly "find_package(Irrlicht)" 23:47 kahrl yes, but 23:47 kahrl you can do find_package(Curses), but it will only find libncurses.so, not libncursesw.so 23:48 kahrl see: https://cmake.org/Bug/view.php?id=10347 23:48 JohnnyComeL8ly There were only two find_package instances in the CMakeLists.txt . 23:49 kahrl hmm? I see tons of them 23:49 JohnnyComeL8ly Well, the one I got in est31's fork is this way. :-) 23:49 kahrl oh, look at src/CMakeLists.txt, not CMakeLists.txt 23:50 JohnnyComeL8ly I see.... 23:52 JohnnyComeL8ly Btw, it compiled all the way.