Time Nick Message 12:57 BlockMen ShadowNinja, https://forum.minetest.net/viewtopic.php?pid=128896#p128896. seems to be caused by 85fe75d1cb 13:31 ShadowNinja BlockMen: Either he's running a server on the same port, or I'll need a --info or --verbose log to help. 13:32 BlockMen ShadowNinja, i can reproduce without another server, so i doubt its that. 13:33 BlockMen is it a windows only problem again? 14:06 BlockMen bbl 15:03 Megaf Can I merge o my minetest "fork" others pull request to the main minetest? 15:03 Megaf Can I merge to my minetest "fork" others pull request to the main minetest?* 15:03 Megaf how? 15:05 RealBadAngel get patch file and apply it to your tree 15:06 RealBadAngel for example: https://github.com/minetest/minetest/pull/1139 15:06 RealBadAngel add .patch to that link 15:06 RealBadAngel and you will get ready patch file 15:06 RealBadAngel wget it to your mt directory 15:07 RealBadAngel and git apply patch_file_name 15:09 Megaf hm 15:15 VanessaE or you can just, git pull https://github.com/sapier/minetest.git silence_hud_errormessage 15:15 VanessaE forget about the .patch stuff. 15:21 Megaf hm 15:21 Megaf heh, I applied two patches and now it doesnt compile anymore 15:22 Megaf but may be something I did 15:22 * VanessaE waits for sapier 15:23 Megaf yep, it was my fault 15:23 Megaf or CMakesCache fault, however 15:27 Megaf PNG warning: Interlace handling should be turned on when using png_read_image 15:27 Megaf is this a bug? 15:28 VanessaE no idea. 15:28 Megaf on the client side 15:28 Megaf Loaded texture: /home/megaf/MegafTest/textures/base/pack/menu_header.png 15:28 Megaf 13:26:14: ACTION[main]: Client: Contacting remote server "http://megaf.no-ip.info:8080/media/" 15:28 Megaf PNG warning: Interlace handling should be turned on when using png_read_image 15:29 VanessaE that's a sort-of bug but it's harmless, ignore it. 15:39 Megaf bye all 15:46 VanessaE minetest-dev-ception! 15:46 VanessaE :) 16:30 VanessaE *looks at clock* 16:30 VanessaE come on sapier, get home from work already..... 16:30 VanessaE :P 17:14 Selat What about complete rewriting of pathfinder class? I wrote reasons here https://github.com/minetest/minetest/pull/1113. 17:22 ShadowNinja Selat: You're welcome to improve it's speed, if you think you can without breaking anything. 18:55 sapier now I'm here VanessaE but you aren't :-) guess something is wrong about 1139? 19:00 sapier Selat, ther's no "slow" or "fast" dejkstra algorithm dejkstra is dejkstra everything else isn't dejkstra ;-) ... and A* .. true it uses a very simple method of A* if you see a reliable yet better mechanism to find the first quess direction you're welcome. ... and recursion ... hmmm recursion is neither fast nor slow by definition. The only thing about it is it requires quite a lot of memory in worst case ;-). You're welcome to write ano 19:02 sapier btw the used A* is quite fast in typical situations. Sad thing is you usually don't know if you're in a typical or worst case situation prior doing it 19:03 sapier please use a own issue for things like that... especialy this issue is already way to crowded ;-) 19:05 sapier https://forum.minetest.net/viewtopic.php?pid=128896#p128896 how did that guy manage to start it ipv6? I guess this wasn't intended? 19:07 Selat spaier: 1. From wiki: "In mathematics and computer science, an algorithm is a step-by-step procedure for calculations". So speed of it depends of used data structures. 19:07 Selat *depends on 19:08 sapier and? 19:08 Selat Class "pathfinder" uses the worst possible structure. It's possible to implement dejkstra and A* with set - and it will be much faster 19:09 Selat std::set 19:09 sapier well it's easy to benchmark ;-) so you're welcome to do it 19:10 Selat And recursion is much slower than queue for the same algorithm. 19:10 sapier as I said problem with this code isn't it's typical time but it's worst case time ... I'm not sure if this will change by better datastructures. 19:12 sapier It's been my first pathfinding algorithm so I'm quite sure it can be done better. Feel free to improve it that's how open source works 19:13 Selat In any way dejkstra' algorithm implementation seems to be wrong (I'm not sure that this strange code will work properly). Actually in pathfinder it looks like just simple bfs. 19:13 sapier it does work properly 19:14 sapier you can enable the debug functions to see what it's doing 19:15 sapier and dejksta isn't a fast algorithm ... can't be fast as any other algorithm with guaranteed shortest path 19:17 Selat Dejkstra is the fastest algorithm. It's complexity for sparse graphs O(m log n). A* is just a crutch for one certain type of graphs. 19:18 sapier no A* is just a shortcut algorithm trying smart guessing correct direction and aborting on found path immediatly 19:18 sapier dejkstra is fastest algorithm with guaranteed shortest path 19:21 Selat In the general case it's impossible to guess the shortest pass (don't forget that graph is just an mathematical abstraction). 19:22 sapier well you won't find a faster algorithm then deijstra in general but A*'s benefit is you often don't care if a path has length 100001 or 100002 19:24 sapier the A* I implemented uses manhattan distance to guess ... that's quite a simple way of guessing 19:24 sapier but results in drastic improvement in general case 19:25 sapier long talk small result, if you can improve it, do it! 19:26 sapier Any improvement is welcome 19:26 sapier and pathfinding improvement can be justified by hard numbers so there ain't even need to discuss about it 19:29 sapier https://github.com/minetest/minetest/blob/master/src/main.cpp#L1230-1270 where exactly is the memory leak selat? 19:30 Selat It's just good style to delete all allocated objects and didn't rely on OS. 19:31 Selat By the way this https://github.com/minetest/minetest/blob/master/src/script/lua_api/l_mainmenu.cpp#L868-869 is really strange. 19:32 sapier yes I've seen it too there once was a else case evaluating the now unused variable 19:33 sapier Selat I recommend just writing a pull request for fixes like the memory leak ... will save a lot of tim re evaluating things you already found 19:34 Selat Here https://github.com/minetest/minetest/issues/1137 is link to commit that fixes leak. 19:36 sapier ahhh :-) 19:36 sapier ok, that's not the usual way to do it ;-) 19:38 Selat ok, I'll send now pull request that fixes these bugs. Should there be a such condition: (bytes_read == 0 ) || ((bytes_written = fwrite(read_buffer, 1, bytes_read, targetfile)) != bytes_read)? 19:38 sapier no I already fetched it, was meant for next time 19:43 sapier what do you mean with the condition? the one in code is different from what you've written 19:43 Selat Meanwhile: this https://github.com/Selat/minetest/blob/master/src/pathfinder.cpp#L629 is called DFS http://en.wikipedia.org/wiki/Depth-first_search - not dejkstra. 19:44 Selat I meant is it correct fix. 19:45 sapier well that one is just a optimization to not have to read data from map and calculate cost of transition each time. accessing map is quite costly in minetest 19:49 sapier it's not calculating the total cost at this node so it's not dfs 19:50 sapier well ok it is 19:50 Selat ok, but where is actually pathfinder? The only switch that checks algorithm calls this method. 19:59 sapier actually costmap already does most of work true 20:01 sapier btw in case each transition cost is equal BFS and Dijkstra are equivalent 20:01 Selat Yes. 20:01 sapier and tha's exactly the situation we have 20:02 sapier so it's BFS AND Dijkstra ;-) 20:02 Selat BFS isn't the same as DFS. 20:03 sapier quite some time since I did this :-) 20:03 sapier in this special case it is 20:03 Selat No. DFS uses stack, and bfs queue. 20:03 Selat A* is the same as DFS with some crutches. 20:04 sapier what do you believe to be the difference between queue and stack? 20:04 Selat LIFO and FIFO. 20:05 sapier ok so we're talking about same thing ... just wanted to make this sure first 20:06 sapier I suggest just trying to implement it with fifo ... maybe it's gonna behave better 20:07 sapier actually this was intended to be optimized for multicore usage but that optimization was never done 20:10 sapier (bytes_read == 0 ) || ((bytes_written = fwrite(read_buffer, 1, bytes_read, targetfile)) != bytes_read) why to you wanna change it to == 0= 20:10 sapier ? 20:11 Selat because bytes_read is unsigned and cannot be less than zero. 20:13 sapier hmm that's not a strange condition that's actually a bug 20:13 sapier case of error this code will never finish 20:14 xyz this was reported before btw 20:15 sapier well statements like "strange condition" is something completely different then "will never finish on error" 20:15 xyz yeah so it's safe to ignore them 20:16 sapier I didn't ignore it last time the report was about the bytes_written. whoever reported it didn't pinpoint at the bytes_read < 0 issue and I didn't see it by that time too 20:17 xyz I'm pretty sure there was a report about bytes_read 20:17 xyz http://irc.minetest.ru/minetest-dev/2013-11-30#i_3464435 20:17 xyz http://irc.minetest.ru/minetest-dev/2013-08-11#i_3255795 20:20 sapier well as you read I didn't realize 830 bug as I even wrote about 831 ... and was talking to shadow by that time 20:21 sapier and in second I wasn't involved ;-) 20:21 sapier I wonder why noone fixed this even multiple people (except me seemed to realize it) 20:23 xyz I guess it's because nobody can understand what this code does in timely fashion? 20:23 sapier what's hard to understand about checking if bytes written is same as bytes read before? 20:25 xyz dunno, but that's how I see it; there are no comments whatsoever 20:26 sapier ok I pushed the fix now 20:28 sapier as I'm about obvious but unseen/realized errors anything else left? 20:29 xyz obvious errors can be detected by clang static analyzer 20:31 sapier well clang right now shows more errors I can count ;-) I intended to fix those this weekend 20:33 xyz most of the warning are due to virtual functions being overloaded in a wrong way and class/struct mixed 20:33 Selat Maybe cppcheck is better for this purpose? 20:34 sapier both have pro and con 20:34 sapier in best case we compile -Wpedantic -Werror :-) 20:35 xyz using multiple different tools won't do any harm 20:35 xyz last time someone posted a clang static analyzer report to issue tracker it was ignored 20:36 xyz only one issue was fixed at the time 20:36 Selat I would be cool of each build set of most important warnings would be posted somewhere by buildbot. 20:36 sapier not exactly I did read it and put it on my todo list ... right after all the other work to be done ... I could've told you about it sorry for that 20:37 sapier imho our goal should be not have any warnings in there 20:37 sapier and wit not any I'm talking about gcc cland and in best case msvc too 20:38 xyz it was basically "fuck you, we're too smart for this shit" 20:38 xyz https://github.com/minetest/minetest/issues/808 20:40 sapier oops :-/ guess kwolekr somehow has chosen wrong words 20:43 sapier hmm I didn't check all of the issues by now but to me most of them seem to be valid errors (or at least valid without additional knowledge) 20:44 xyz some of them are fixed already 20:44 xyz like that case without breaks 20:44 xyz or division by zero in database migration script 20:44 xyz it also would be a nice idea to run mt with clang address sanitizer enabled 20:44 xyz that way it'll report to you whenever there's invalid memory access or similar 20:45 xyz so a bit like valgrind but performance decrease is much less (2x as advertised) 20:45 sapier I'll encourage everyone to do it. I can't promis all of the findings will be solved imediatly but they will be noticed and fixed 20:45 sapier yes memory sanitizer is reason why I recently installed clang. but I didn't have time to find out how to use it by now 20:46 sapier I hope clang will show things like u16value = someu32value too 20:46 xyz you just add -fsanitize=address to compile params 20:47 xyz freeminer has this by the way 20:47 xyz https://github.com/freeminer/freeminer/blob/master/src/CMakeLists.txt#L610 20:48 sapier imho we should do a check for clang there 20:48 xyz i don't care 20:49 xyz sorry :( 20:49 sapier I know ... that's one of the things I don't like too much ;-) 20:59 sapier if there aren't concerns about this one I'm gonna push it in a few hours https://github.com/minetest/minetest/pull/1135 21:18 sapier sometimes I really wonder what crazy code compiles: 21:18 sapier https://github.com/minetest/minetest/blob/master/src/clientobject.h#L58 vs 21:18 sapier https://github.com/minetest/minetest/blob/master/src/activeobject.h#L64 21:58 sapier coredevs what do you think about enabling -Werror? 22:04 emptty sapier: I'm by no mean a coredev, but that's usually a good idea from my experience 22:07 sapier emptty :-) the one I was looking for some days :-) 22:08 emptty hello :) 22:11 sapier I can't reproduce the luajit issue 22:12 sapier I need more information about it ... something in your environment may cause it ... do you run mt at at a very very fast machine? 22:12 sapier luajit is broken till 2.0.0beta7 22:12 sapier but you said you've got 2.0.2 is this correct? 22:14 emptty sapier: pliz highlight me on every line tonight 22:14 emptty I've got a deadline for an article that must be written in 14 hours 22:15 sapier ok no need to discuss this now emptty do your work first 22:15 emptty I can answer any question you have, btu I wont (I shouldnt) lurk here if not asked 22:16 emptty I've libluajit version 2.0.2+dfsg-1 22:16 emptty my machine is fast, but not terribly fast 22:16 emptty the dfsg in the version number says that it was repacked for debian, probably to remove some non-free bits (such as DLL or such) 22:17 emptty sapier: the version of MT I'm using is the latest stable, not the git 23:17 hmmmm ah, sapier, I recall having problems compiling with clang because of that 23:17 hmmmm don't remember why I didn't fix it then. 23:20 sapier yes I'm having quite some trouble fixing it 23:21 sapier I managed to fix the warnings but now octaves are set to some quite crazy value 23:22 sapier is there missing a default value? 23:36 sapier well hmmmm getNoiseParams wont read octave as well as persistence ... no need to specify them in settings ;-) 23:37 hmmmm huh? 23:37 hmmmm why not 23:37 hmmmm hold on a minute 23:37 sapier #define getNoiseParams(x, y) getStruct((x), "f,f,v3,s32,s32,f", &(y), sizeof(y)) 23:37 sapier not within the specified format 23:37 hmmmm erm 23:38 hmmmm offset, scale, spread factor, seed offset, octaves, persistance 23:38 hmmmm did I reverse the final two params on accident?? 23:39 hmmmm hmmm looks fine to me sapier 23:39 sapier you're right it looks fine but result is bad 23:40 sapier but I can't really explain why (yet) 23:40 hmmmm btw I know that code looks whacked out but i did account for everything like alignment 23:40 sapier what I see in debugger is np are preinitialized fine and broken after this 23:40 hmmmm are you sure you're not overwriting memory 23:40 * ShadowNinja waves around https://github.com/minetest/minetest_game/pull/201 -- Added a caped player model 23:41 sapier no I'm not but getNoiseParams is the one doing the overwriting 23:42 sapier I wonder where those parameters are from, I don't have them in config 23:42 ShadowNinja ^ Been waiting a long time. And as far as I can see there's no reason not to merge it. Can someone else agree? 23:43 sapier I'm fine with this mod ShadowNinja 23:43 VanessaE put Stu's split limb model into it somehow and you've got my vote ;) 23:44 ShadowNinja Alright, I'll merge it. Split limbs later. 23:47 sapier ok I now know whats happening 23:48 sapier ok wrong I don't 23:50 sapier it's somehow related to your removal of polymorphism ... I had to revert it on order to make clang not throw a warning about invalid overloading ... but obviously that causes issues in getNoiseParams 23:50 sapier because there a plain struct is required 23:51 sapier ok that seems to be a valid explanation ... can you follow my thoughts hmmmm? 23:56 hmmmm oh shiit 23:56 hmmmm don't tell me i made it non-pod 23:56 hmmmm because i just added a god damn constructor? really? 23:58 sapier no that's been me to fix clang using it correctly 23:58 hmmmm yeah btw 23:59 sapier hmm maybe I could fix this way more simple by using a static cast instead of dynamic ... 23:59 hmmmm structs that you get with getStruct needs to be POD or else something undefined happens 23:59 hmmmm i should've added a comment about that 23:59 sapier I just figured out this myself ;-)