Time |
Nick |
Message |
00:12 |
|
davisonio joined #minetest-dev |
00:12 |
|
book` joined #minetest-dev |
00:16 |
|
Icedream joined #minetest-dev |
00:19 |
|
exio4 joined #minetest-dev |
00:26 |
|
Tmanyo joined #minetest-dev |
00:29 |
|
Megaf|Away joined #minetest-dev |
00:36 |
|
kaeza joined #minetest-dev |
01:12 |
|
turtleman joined #minetest-dev |
01:40 |
|
kaeza joined #minetest-dev |
01:54 |
|
dzho joined #minetest-dev |
01:57 |
|
dzho joined #minetest-dev |
02:02 |
|
dzho joined #minetest-dev |
02:36 |
|
DFeniks joined #minetest-dev |
03:09 |
|
ssieb joined #minetest-dev |
03:15 |
kaeza |
I can reproduce #4810 in release mode, but not in debug mode :/ |
03:15 |
ShadowBot |
https://github.com/minetest/minetest/issues/4810 -- Unittests crash on Release build |
03:19 |
sofar |
I somehow think that the condition is optimized out |
03:19 |
sofar |
at least, that's how it is looking to me |
03:26 |
kaeza |
wish compilation from scratch didn't take half an hour |
03:27 |
kaeza |
but then again, what can you expect from, *ahem* a ~2009 dual core |
03:27 |
sofar |
I was about to say.... |
03:27 |
sofar |
$ time make -C build -j12 |
03:28 |
|
lordfingle joined #minetest-dev |
03:28 |
sofar |
my cpu is q1-2011 |
03:28 |
sofar |
but, 12 threads XD |
03:29 |
kaeza |
Intel E5700 here. probably older than 2009 |
03:29 |
sofar |
q3'10 |
03:30 |
sofar |
real2m22.396s |
03:30 |
sofar |
user24m31.483s |
03:30 |
sofar |
2 1/2 mins to compile minetest |
03:31 |
sofar |
even though it's HT, the 6 threads give way more than just a few % increase |
03:32 |
sofar |
144 secs total, each thread average consumed 123 seconds |
03:32 |
sofar |
86% of theoretical ideal HT performance |
03:32 |
kaeza |
"BOUND IS NOT 0: 0" |
03:33 |
kaeza |
nice gcc :( |
03:35 |
sofar |
you know |
03:35 |
sofar |
kaeza: try this |
03:35 |
sofar |
- return next(); |
03:35 |
sofar |
+ abort(); |
03:35 |
sofar |
just recompile and run |
03:38 |
sofar |
don't make clean, just recompile noise.cpp |
03:39 |
kaeza |
same thing |
03:40 |
sofar |
does that abort or FPE? |
03:40 |
kaeza |
SIGFPE |
03:40 |
sofar |
try this one: |
03:40 |
sofar |
- return next(); |
03:40 |
sofar |
+ return this->next(); |
03:40 |
sofar |
that one fixes the issue for me |
03:41 |
sofar |
that confirms my suspicion that the condition is optimized away |
03:42 |
sofar |
kaeza: what compile optimization level did you do for the `abort()` build? |
03:43 |
kaeza |
I used CMAKE_BUILD_TYPE=RelWithDebInfo. I think it has -O2 in there, but not sure |
03:43 |
kaeza |
lemme check |
03:45 |
kaeza |
/usr/bin/c++ -DUSE_CMAKE_CONFIG_H [-I...] -DNDEBUG -Wall -ffast-math -Wall -pipe -funroll-loops -O3 -fomit-frame-pointer -o CMakeFiles/minetest.dir/noise.cpp.o -c .../src/minetest/src/noise.cpp |
03:46 |
sofar |
I have no clue how to tell cmake to use -O0 or anything else instead |
03:46 |
sofar |
otherwise I'd assume -O2 would already fix it |
03:47 |
sofar |
O3 is definitely bad here, I think |
03:47 |
kaeza |
you can set COMPILE_FLAGS property of minetest[.exe] to "-O2" in CMakeLists.txt |
03:48 |
kaeza |
or maybe just make CFLAGS=-O2 |
03:49 |
kaeza |
make CFLAGS does not work it seems |
03:59 |
sofar |
try -O0 |
04:24 |
|
Hunterz joined #minetest-dev |
04:24 |
|
Miner_48er joined #minetest-dev |
04:34 |
kaeza |
sofar, compiling with -O2 fixes the thing, so -O3 is definitely broken |
04:36 |
kaeza |
BTW: real5m58.210s | user10m40.148s |
04:43 |
|
Thomas-S joined #minetest-dev |
06:03 |
|
YuGiOhJCJ joined #minetest-dev |
06:13 |
|
nrzkt joined #minetest-dev |
06:57 |
|
lumidify joined #minetest-dev |
07:07 |
|
Hunterz joined #minetest-dev |
07:27 |
nrzkt |
Zeno`, sofar sfan5 can you look at #5020 i imported a part of Rogier-5 PR (#4764) the performance fix + some constness) |
07:27 |
ShadowBot |
https://github.com/minetest/minetest/issues/5020 -- Performance fix + constness on SAO by nerzhul |
07:28 |
|
proller joined #minetest-dev |
07:31 |
nrzkt |
#4764 |
07:31 |
ShadowBot |
https://github.com/minetest/minetest/issues/4764 -- Sao refactor 2 by Rogier-5 |
07:31 |
nrzkt |
seems the bot only read first github issue |
08:09 |
|
Darcidride joined #minetest-dev |
08:51 |
|
nrzkt joined #minetest-dev |
09:02 |
|
juhdanad joined #minetest-dev |
09:21 |
|
froike_ joined #minetest-dev |
09:38 |
|
proller joined #minetest-dev |
11:35 |
|
YuGiOhJCJ joined #minetest-dev |
12:00 |
|
lumidify joined #minetest-dev |
12:25 |
juhdanad |
In #4986 the palettes are implemented! |
12:25 |
ShadowBot |
https://github.com/minetest/minetest/issues/4986 -- Hardware node coloring by juhdanad |
12:25 |
VanessaE |
niice |
12:26 |
|
proller joined #minetest-dev |
12:28 |
Calinou |
"no textures -> higher framerate" |
12:28 |
Calinou |
what kind of hardware is this? :P |
12:30 |
juhdanad |
Sorry, I don't understand what you don't understand. |
12:48 |
|
Thomas-S joined #minetest-dev |
13:50 |
|
Fixer joined #minetest-dev |
14:19 |
|
STHGOM joined #minetest-dev |
14:33 |
nrzkt |
merging #5020 in few minutes, thanks sfan5 for the review |
14:33 |
ShadowBot |
https://github.com/minetest/minetest/issues/5020 -- Performance fix + constness + SAO attribute factorization by nerzhul |
14:34 |
sfan5 |
uh wheres the second approval |
14:54 |
nrzkt |
i'm a coredev |
14:54 |
nrzkt |
i approve rogier |
14:54 |
sfan5 |
oh the original is by him |
14:55 |
nrzkt |
yes i split his PR in a simpler part, and i will do another PR with second refactor part (move some functions) because the current original PR needs to be rebase and is a little bit painful as is |
14:55 |
nrzkt |
(i will do it later) |
14:56 |
|
turtleman joined #minetest-dev |
15:23 |
|
juhdanad joined #minetest-dev |
15:38 |
juhdanad |
Is there a way to set the depth function to GL_LEQUAL in Irrlicht? |
15:38 |
|
lumidify joined #minetest-dev |
15:46 |
|
octacian joined #minetest-dev |
15:46 |
|
octacian joined #minetest-dev |
15:52 |
juhdanad |
I found it! Sorry for bothering you... |
15:56 |
|
blaze joined #minetest-dev |
15:58 |
|
STHGOM joined #minetest-dev |
15:58 |
|
STHGOM joined #minetest-dev |
16:10 |
|
KaadmY joined #minetest-dev |
16:26 |
|
turtleman joined #minetest-dev |
16:32 |
|
Darcidride joined #minetest-dev |
16:49 |
|
Hunterz joined #minetest-dev |
18:02 |
|
rubenwardy joined #minetest-dev |
18:06 |
|
twoelk joined #minetest-dev |
18:07 |
|
diemartin joined #minetest-dev |
18:19 |
|
proller joined #minetest-dev |
18:20 |
|
nrzkt joined #minetest-dev |
18:30 |
|
Marko10_000 joined #minetest-dev |
18:34 |
|
Marko10_000 joined #minetest-dev |
18:47 |
|
garywhite joined #minetest-dev |
19:14 |
|
diemartin joined #minetest-dev |
19:14 |
|
Krock joined #minetest-dev |
19:14 |
|
Krock joined #minetest-dev |
19:17 |
|
ssieb joined #minetest-dev |
19:25 |
nrzkt |
merging #5021 |
19:25 |
ShadowBot |
https://github.com/minetest/minetest/issues/5021 -- Make nametag removable with set_nametag_attributes by Rui-Minetest |
19:34 |
|
AcidNinjaFWHR joined #minetest-dev |
19:34 |
|
AcidNinjaFWHR joined #minetest-dev |
19:35 |
|
fwhcat joined #minetest-dev |
19:44 |
|
xunto joined #minetest-dev |
20:05 |
|
juhdanad_ joined #minetest-dev |
20:21 |
|
proller joined #minetest-dev |
20:40 |
|
kaeza joined #minetest-dev |
20:42 |
|
YuGiOhJCJ joined #minetest-dev |
20:42 |
|
proller joined #minetest-dev |
20:43 |
|
KaadmY joined #minetest-dev |
21:11 |
kaeza |
sofar, re: unittest crash, your patch does nothing for me |
21:11 |
sfan5 |
it should actually do nothing |
21:11 |
kaeza |
keep getting SIGFPE |
21:12 |
sfan5 |
since next() references the next in the same class and is thus called like this->next() anyway |
21:12 |
sfan5 |
to me it sounds like the compiler is doing something wrong |
21:12 |
kaeza |
see discussion yesterday |
21:12 |
kaeza |
or earlier |
21:13 |
kaeza |
changing -O3 to -O2 fixes the issue here |
21:14 |
kaeza |
something funny is going on with gcc |
21:17 |
sfan5 |
compilers are advanced magic |
21:17 |
sfan5 |
sometimes that magic goes wrong |
21:17 |
KaadmY |
:D |
21:30 |
|
Tmanyo joined #minetest-dev |
21:34 |
|
betterthanyou710 joined #minetest-dev |
21:37 |
|
troller joined #minetest-dev |
21:38 |
garywhite |
Hi Tmanyo |
21:38 |
Tmanyo |
hi |
21:39 |
|
paramat joined #minetest-dev |
21:39 |
garywhite |
Sorry, wrong channel again |
21:48 |
nrzkt |
sfan5, i added a new PR from rogier SAO refactor commit #5022, easy part, it's the factorization of exactly similar parts between LuaEntitySAO & + a little perf fix |
21:48 |
ShadowBot |
https://github.com/minetest/minetest/issues/5022 -- Cleanup content_sao by factorizing similar code parts by nerzhul |
21:53 |
est31 |
idk maybe -O3 is just using undefined behaviour? |
21:53 |
est31 |
compilers are weird, e.g. overflow is undefined |
21:55 |
sfan5 |
no that's not how it works |
21:55 |
sfan5 |
at the C/C++ language level overflow is undefined |
21:55 |
sfan5 |
which gives the compiler the right to do what it wants |
21:55 |
sfan5 |
however at processor level overflow is very well defined and the compiler knows about that |
21:55 |
kaeza |
the compiler is optimizing the `if` (and `return`) out |
21:56 |
est31 |
sfan5: yes |
21:56 |
kaeza |
maybe somebody is crazy enough to `gcc -S` it and check? |
21:56 |
est31 |
sfan5: I was talking about C++ level overflow |
21:56 |
est31 |
in asm its defined yes |
21:57 |
sfan5 |
but using -O3 doesn't modify the c++ code |
21:57 |
est31 |
what issue are you talking about either way? |
21:58 |
kaeza |
#4810 |
21:58 |
ShadowBot |
https://github.com/minetest/minetest/issues/4810 -- Unittests crash on Release build |
22:01 |
sfan5 |
kaeza: _ZN9PcgRandom5rangeEj: testl %esi, %esi je .L64 |
22:01 |
sfan5 |
the check is there |
22:01 |
sfan5 |
i used to be able to reproduce that issue too but it doesn't work anymore, probably after a compiler update |
22:02 |
est31 |
maybe a compiler bug then? |
22:02 |
est31 |
either its a bug in our program, or a compiler bug |
22:04 |
est31 |
how to run unittests again? |
22:04 |
est31 |
ah --run-unittests |
22:05 |
est31 |
mhh cant reproduce either |
22:06 |
est31 |
but have gcc 6.2.0 so it might be too old |
22:07 |
est31 |
also its weird that turning on debug info makes the bug go away |
22:07 |
est31 |
since when is debug info a problem |
22:07 |
kaeza |
it's not debug info |
22:07 |
est31 |
"Running the unittests on a Release build crashes with:" [...] |
22:08 |
sfan5 |
RelWithDebInfo probably has slightly different optimization flags from Release |
22:08 |
est31 |
"In Debug, RelWithDebInfo or MinSizeRel they run fine." |
22:08 |
kaeza |
debug builds use -O2 |
22:08 |
est31 |
yeah |
22:08 |
kaeza |
release use -O3 |
22:08 |
est31 |
mhh well first step is to minimize the test |
22:08 |
est31 |
then to look at the generated assembly and the code |
22:08 |
est31 |
then to look at it again |
22:08 |
est31 |
then to look at what's defined and undefined |
22:08 |
est31 |
then to look at it again |
22:09 |
est31 |
and then to file a bug |
22:09 |
est31 |
(in the compiler) |
22:09 |
sfan5 |
that will waste the maintainers time |
22:09 |
est31 |
also probably gcc devs already know of this |
22:09 |
sfan5 |
since the bug is obviously already fixed in later verions |
22:09 |
sfan5 |
versions* |
22:09 |
est31 |
is it? |
22:09 |
sfan5 |
...you just said you can't reproduce |
22:09 |
kaeza |
probably |
22:09 |
est31 |
I was on debug build :) |
22:09 |
kaeza |
>gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) |
22:10 |
est31 |
it seems to appear with 5.4.0 but not with 6.2.1 and then it appears again on 6.3.0 |
22:10 |
est31 |
how weird is that |
22:10 |
est31 |
probably some other factor than compiler version plays into it |
22:10 |
est31 |
is it spurious? |
22:10 |
sfan5 |
it either always happens or never |
22:11 |
est31 |
so no. |
22:11 |
sfan5 |
maybe g++ devs "accidentally" fixed the bug and then unfixed it |
22:11 |
est31 |
could be |
22:11 |
est31 |
but thats bad, dont they have a testsuite |
22:11 |
sfan5 |
they do |
22:12 |
sfan5 |
but who knows what special factors cause this issue |
22:12 |
est31 |
idk about gcc, but rust has a gigantic testsuite and each single bug that gets fixed gets put inside so that it never regresses |
22:12 |
sfan5 |
their test suite cannot cover the infinite set of C++ code one could write |
22:12 |
est31 |
yeah |
22:12 |
est31 |
but as you said, maybe the fixing of the issue was an accident |
22:12 |
est31 |
oookay |
22:12 |
est31 |
I can reproduce |
22:13 |
est31 |
now next step: minification |
22:13 |
sfan5 |
wait which gcc version? |
22:13 |
est31 |
6.2 |
22:13 |
est31 |
dunno whether I used clang though |
22:13 |
sfan5 |
never happened for me w/ clang |
22:14 |
est31 |
GNU C11 6.2.0 20161005 -mlong-double-80 -mtune=generic -march=x86-64 -g -g -g -O2 -O2 -O2 -fbuilding-libgcc -fno-stack-protector -fpic |
22:14 |
est31 |
thats from strings bin/minetest |
22:14 |
est31 |
so it must be true |
22:14 |
est31 |
strings never lies |
22:14 |
kaeza |
try touch src/noise.cpp ; make VERBOSE=y |
22:14 |
est31 |
err... -O2 ?? |
22:15 |
sfan5 |
you're looking at the opt flags for c code |
22:15 |
sfan5 |
use kaeza's method to determine what really is used |
22:15 |
est31 |
? |
22:15 |
sfan5 |
also -fbuilding-libgcc suggests that you have catched the build flags when libgcc was built by your distro |
22:16 |
est31 |
yeah :D |
22:16 |
est31 |
well dunno, suprising that libgcc gets statically linked either way |
22:16 |
est31 |
guess libgcc != glibc |
22:16 |
est31 |
mhh |
22:16 |
sfan5 |
huh i can reproduce again |
22:16 |
sfan5 |
with /usr/bin/c++ -DSERVER -DUSE_CMAKE_CONFIG_H -I/usr/include/leveldb -I/usr/include/hiredis -I/tmp/minetest/src -I/usr/include/irrlicht -I/tmp/minetest/src/Release -I/usr/include/luajit-2.0 -I/tmp/minetest/src/jsoncpp -I/tmp/minetest/src/script -I/usr/include/freetype2 -I/tmp/minetest/src/cguittfont -DNDEBUG -Wall -ffast-math -Wall -pipe -funroll-loops -O3 -fomit-frame-pointer -o CMakeFiles/minetestserver.dir/noise.cpp.o -c |
22:16 |
sfan5 |
/tmp/minetest/src/noise.cpp |
22:17 |
sfan5 |
( gcc-Version 6.2.1 20160830 (GCC) ) |
22:19 |
sfan5 |
here's the asm http://paste.ubuntu.com/23783912/ |
22:19 |
est31 |
no debuginfo? |
22:20 |
est31 |
also, what are the inputs |
22:20 |
sfan5 |
missed that line |
22:20 |
sfan5 |
no i used Release |
22:20 |
est31 |
that doesnt mean you have to miss debuginfo |
22:20 |
est31 |
optimisations are separate from debuginfo |
22:20 |
est31 |
also, do -M intel on objdump |
22:21 |
est31 |
att syntax is horrible |
22:21 |
sfan5 |
i know |
22:21 |
sfan5 |
it's however crashing in PcgRandom::range(int, int) not PcgRandom::range(unsigned int) |
22:22 |
sfan5 |
this is a whole different issue |
22:22 |
sfan5 |
it doesn't crash in the function where bound is used |
22:24 |
|
proller joined #minetest-dev |
22:26 |
sfan5 |
oh that's inlined somewhere i guess(?) |
22:30 |
paramat |
no hmmmm again, i feel lost |
22:31 |
est31 |
oh great |
22:32 |
est31 |
seems when I extract the stuff into a minimal program it works |
22:33 |
kaeza |
Thread 1 "minetest" received signal SIGFPE, Arithmetic exception. |
22:33 |
kaeza |
0x0000000000894958 in PcgRandom::range (bound=0, this=0x7fffffffc890) |
22:33 |
kaeza |
at /home/kaeza/src/minetest/src/noise.cpp:102 |
22:33 |
kaeza |
102u32 threshold = -bound % bound; |
22:33 |
est31 |
this standalone program |
22:33 |
est31 |
https://gist.github.com/est31/75e752ef22bdf1a9a0881da493a1bbe2 |
22:34 |
est31 |
compiled with g++ -pipe -funroll-loops -fomit-frame-pointer -ffast-math -O3 -o m main.cpp |
22:34 |
paramat |
any opinions on #5014 before i merge it later? |
22:34 |
est31 |
doesnt work |
22:34 |
ShadowBot |
https://github.com/minetest/minetest/issues/5014 -- Sky: Do not darken in dark places when above water_level by paramat |
22:34 |
kaeza |
whoa, sorry about that |
22:35 |
sfan5 |
so the problem is with s32 PcgRandom::range(s32 min, s32 max) |
22:36 |
sfan5 |
since the exception on (max < min) assures the compiler that max >= min |
22:36 |
sfan5 |
it can rightfully assume that max - min + 1 is never 0 and removes the zero check when inlining u32 PcgRandom::range(u32 bound) |
22:36 |
sfan5 |
though for some reason it is actually 0 |
22:37 |
est31 |
it performs the - operation before the % right? |
22:37 |
sfan5 |
yes |
22:38 |
sfan5 |
the only way i can see it being 0 is that max - min underflows to 0xffffffff and +1 makes it go to 0 |
22:38 |
est31 |
yeah |
22:44 |
sfan5 |
https://github.com/minetest/minetest/commit/738fbc66d096575bb9a1694056ce2d627a70c03d |
22:44 |
sfan5 |
hm |
22:44 |
sfan5 |
looks like previous gcc versions were not smart enough to optimize the check away when inlining |
22:48 |
sfan5 |
const static s32 RANDOM_MIN = -0x7fffffff - 1; |
22:48 |
sfan5 |
is this supposed to be the smallest number random can generate? |
22:48 |
sfan5 |
or the number below that one? |
22:48 |
est31 |
dunno |
23:14 |
|
DI3HARD139 joined #minetest-dev |
23:19 |
|
Zeno` joined #minetest-dev |
23:21 |
|
Player_2 joined #minetest-dev |