Time Nick Message 00:33 sofar I'll take a look at the PR 00:43 erle sofar at which one? the one from fleckenstein or from luatic? 09:51 rubenwardy yay 09:51 rubenwardy I can confirm that Google Play is giving nice tracebacks now 09:52 rubenwardy first crash is a main menu issue - "no future without main menu" 09:52 rubenwardy we don't have access to debug.txt so there's no way to know the Lua error 10:32 celeron55 wait where does that error text come from 10:33 MTDiscord oh, I remember encountering a main menu problem. Forgot to look into it. But if you create a world without specifying which game, a big Lua error popped up 10:33 celeron55 why can't the lua error end up in the same place 10:34 rubenwardy that the error message comes from reading the source code 10:34 rubenwardy it calls `abort();` so Google Play just has a SIGABT with a line 10:35 rubenwardy (GUIEngine::GUIEngine()) (SourceCode: /home/ruben/dev/minetest_android_release/android/native/jni/../../../src/gui/guiEngine.cpp:202) 10:35 rubenwardy specifically 10:43 celeron55 would be nice to be able to include an error message somehow 11:38 erle celeron55, i do not know too much about C++, but can you just catch SIGABRT? 11:38 erle void die(int s) { std::cout << "[last lines of debug.txt here]\n"; exit(s); } 11:38 erle int main () { signal(SIGABRT, die); while(1) {}; return 0; } 11:38 erle i tried this just now, but maybe it does not work on android for some reason? 11:40 erle ok i checked, this also works if the abort() call comes from inside the house 11:44 sfan5 ...catch the abort to print an useful error message that we could just have printed directly? 11:45 sfan5 the issue is that google play crash reporting only has a backtrace but no way to include an error message or log lines (afaik) 11:46 erle the thing is, i bet abort() is used more often than once. also i do not know if you need special handling for android error messages. 11:50 sfan5 the backtrace can already tell us where abort() was called 11:56 celeron55 well, can we catch abort and then somehow cause a backtrace with more information? 8) 11:57 celeron55 make function for each alphabet that can be called using an array of letters and which will recursively create a stack with the given letters and then actually abort 11:58 celeron55 if it works, it's not stupid 11:59 MTDiscord make sure it won't be inlined 12:01 MTDiscord but src/gui/guiEngine.cpp:202 doesn't have a error message, what do you want to print here? 12:26 celeron55 i guess it gets kind of complicated as the actual problem has probably occurred some time earlier 12:29 MTDiscord you can try to print the whole debug.txt that way, but it looks quite ambitious 12:38 celeron55 if we absolutely need a crash report sending function and a server for receiving them, it's not impossible to do it, but for more than a decade we've managed without 12:47 rubenwardy "Managed without" depends on your tolerance for bugs 12:47 MTDiscord well, for more than a decade minetest has a poor android support 12:47 rubenwardy yeah 12:48 rubenwardy better support for error reporting on Android would be nice as a start, wouldn't be against extending it to other platforms but Android+GooglePlay is the ideal situation for it 12:49 rubenwardy as 1) it's currently obscure to debug on android (you can't just ask users to grab a debug.txt) 12:51 rubenwardy 2) was going to be privacy, but that's not actually as a huge difference as you'd still want a method to opt out 12:53 MTDiscord why can't you ask users to grab their debug.txt? 12:53 MTDiscord I feel that automatic crash reporting should be out-in, reports can contain a lot of private data 12:54 rubenwardy it's complicated 12:55 rubenwardy currently, you often need to install a new file browser to access it 12:55 rubenwardy we could add an option to share the file with a share intent, but that would only work if the app isn't crashing 12:55 rubenwardy actually, I'll do that now 12:56 rubenwardy I do opt-out automatic crash reporting in my apps, I'm very careful to never log any private data. But it's easier when you do this from the start and don't have modding support 12:57 celeron55 i guess there could be an android launcher that handles any crashes 12:58 rubenwardy the Java is effectively already an Android launcher 12:58 rubenwardy you could add some UI there to handle it crashing 12:59 celeron55 displaying the last lines from debug.txt in a copyable element would make sense 13:25 paradust A pattern I've seen (and like) is having a BaseException class that stores a full stack trace at the time it is created (using the backtrace API), and stores it along with the message 13:25 paradust And a top-level handler that catches all exceptions and logs them regardless of the logging levels 13:29 rubenwardy #12370 13:29 ShadowBot https://github.com/minetest/minetest/issues/12370 -- Add support for sharing debug.txt on Android by rubenwardy 13:33 MTDiscord That is... very useful. You could eg text it to yourself. 17:45 rubenwardy another android crash https://gist.github.com/rubenwardy/8d3383974edc959f21fa14e31706fc36 17:46 rubenwardy https://github.com/minetest/minetest/blob/master/src/debug.cpp#L74 17:47 rubenwardy https://github.com/minetest/minetest/blob/stable-5/src/script/cpp_api/s_async.cpp#L209 17:47 rubenwardy Seems to be related, another mainmenu issue 17:48 MTDiscord another lua error without context ? 17:48 rubenwardy yeah, it's the same phone model 17:48 MTDiscord how much RAM does it have? 17:48 rubenwardy Redmi 9T 17:48 rubenwardy 3.8GB 17:48 MTDiscord should be enough 17:49 MTDiscord maybe they're trying to run a huge modpack 17:49 MTDiscord I wonder how OOM would look for android 17:50 rubenwardy it's in the main menu 17:50 rubenwardy both errors are in the main menu 17:51 MTDiscord ah, indeed 17:54 MTDiscord it can be literally anything 17:54 MTDiscord buggy CPU, corrupted flash storage, bit flip during the installation 17:55 rubenwardy I suspect it can't read the mainmenu builtin files 17:55 rubenwardy either a permissions issue or something wrong with the installation process 17:55 rubenwardy perhaps they're low on storage, and it didn't install correctly 17:55 rubenwardy I don't think we handle the low storage case at all 17:56 MTDiscord does it unpack itself during the installation or smth? 17:56 rubenwardy yeah 17:58 MTDiscord https://github.com/minetest/minetest/blob/master/android/app/src/main/java/net/minetest/minetest/UnzipService.java there? 17:59 rubenwardy yeah 18:00 MTDiscord the fact minetest android even needs to extract game data like that into the user's data directory is kinda dirty. like, it probably should be like a RUN_IN_PLACE=0 build where builtin, fonts, minetest_game and other stuff like that is kept inside the app's assets folder instead of spilling over 18:01 MTDiscord I guess you can't save your world to the app's assets folder 18:01 rubenwardy the share folder can be separate to user data folder 18:01 rubenwardy which is the case when MT is installed to /usr 18:01 rubenwardy share is /usr/share/minetest (builtin, games/minetest_game) and user data is ~/.minetest 18:02 rubenwardy but yeah, ideally it wouldn't have both a .zip in the app and an extracted version on disk 18:04 MTDiscord yeah so stuff like worlds and user-installed games and mods would still be in the data folder 18:05 MTDiscord looks like it's handled https://github.com/minetest/minetest/blob/51cfb57b4da8e71e39380bf5bf3e19414c779e12/android/app/src/main/java/net/minetest/minetest/MainActivity.java#L72 18:18 MTDiscord oh lel, I've found the problem 18:18 MTDiscord it won't start the unpack next time on this condition https://github.com/minetest/minetest/blob/6901c5fae54eafb05494823b60d4e26c14b342f1/android/app/src/main/java/net/minetest/minetest/Utils.java#L31 18:19 MTDiscord ofc even if the directories exist, it doesn't guarantee that all the files were unpacked 18:22 rubenwardy it's based on both version code and that function 18:22 rubenwardy https://github.com/minetest/minetest/blob/master/android/app/src/main/java/net/minetest/minetest/MainActivity.java#L155 18:22 rubenwardy version code is updated with any release 18:22 definitelya Could a core-dev open an issue on GitHub for this, please? (Wuzzy asked me to propose this there) https://forum.minetest.net/viewtopic.php?f=5&p=410567#p410567 18:23 MTDiscord what's sharedPreferences? maybe they uninstalled it and installed again? 18:25 rubenwardy shared preferences is an Android API a bit like get_mod_storage 18:25 rubenwardy if they reinstalled then shared preferences will be reset 18:29 MTDiscord no idea then 18:33 MTDiscord is external storage smth like sd card? 18:41 rubenwardy No 18:41 rubenwardy It used to be, but it's just another storage location internal to the device 18:41 rubenwardy Welcome to the Android sdk 18:41 rubenwardy Full of random legacy stuff like that 18:58 sfan5 ROllerozxa app assets are not a folder or we would have surely done that 18:59 sfan5 they stay inside the apk on disk and you can read them using some java apis, no use for Minetest 19:08 MTDiscord so I assume the android asset reader inside of irrlicht doesn't work then? 19:10 sfan5 it probably does, but how many places have you seen inside Minetest that access the file system through irrlicht? 19:10 rubenwardy yeah, we don't want to use more Irrlicht stuff 19:10 rubenwardy ideally, the Android app wrapper would just provide a File URI to the C++ to access as a normal filesystem 19:11 rubenwardy this probably could just work already, but it's still a .zip file 19:13 MTDiscord oh my bad, I thought minetest made use of irrlicht's file IO code 19:14 MTDiscord ...wait, minetest doesn't use any of irrlicht's file IO code? 19:16 rubenwardy there's probably some exceptions 19:16 MTDiscord yeah only thing it uses is for extracting zip files 20:35 sfan5 merging #12343, #12329, #12325, #12321, #12368 in 10m 20:36 ShadowBot https://github.com/minetest/minetest/issues/12343 -- Docs: clarify spawn_by by Zughy 20:36 ShadowBot https://github.com/minetest/minetest/issues/12329 -- Fix no_texture.png being shown (instead of unknown_node.png) for unknown nodes w/ content ID < 125 by Wuzzy2 20:36 ShadowBot https://github.com/minetest/minetest/issues/12325 -- Add missing concurrency protection in logger by paradust7 20:36 ShadowBot https://github.com/minetest/minetest/issues/12321 -- unordered_map instead of map for MapSectors by RichardTry 20:36 ShadowBot https://github.com/minetest/minetest/issues/12368 -- [no squash] Fix hash implementation for SerializedBlockCache by sfan5 21:09 MTDiscord Pushing #12357 in 5m 21:09 ShadowBot https://github.com/minetest/minetest/issues/12357 -- Quantize light frustum calculations by x2048