Xojo Desktop app hangs inside XojoGUIFrameworkARM

I have a desktop app that appears to hang inside of XojoGUIFrameworkARM. The app was unresponsive so I ran GDB backtrace to find where the process was hung.

Thread 1 (Thread 0xb2be3040 (LWP 26748)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x19cc1e4) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x0, cond=0x19cc1b8) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x19cc1b8, mutex=0x0) at pthread_cond_wait.c:655
#3  0xb69ec6a8 in ?? () from /home/<obfuscated>/Libs/XojoGUIFrameworkARM.so
#4  0xb69ea200 in ?? () from /home/<obfuscated>/Libs/XojoGUIFrameworkARM.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

From the backtrace I assume it is waiting for the main thread to resume. It would appear that other threads are still running, just not the main event loop thread. Running strace shows that there are still system calls like getting the system time and reading files. There is a constant ioctl FIONREAD and _newselect (timeout) that might mean something?

[pid 26748] ioctl(27, FIONREAD, [0])    = 0
[pid 26748] _newselect(27, [26], [], [26], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
[pid 26748] ioctl(26, FIONREAD, [0])    = 0
[pid 26748] _newselect(11, [10], [], [10], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
[pid 26748] ioctl(10, FIONREAD, [0])    = 0
[pid 26748] clock_gettime(CLOCK_MONOTONIC, {tv_sec=159264, tv_nsec=850974432}) = 0
[pid 26748] clock_gettime(CLOCK_MONOTONIC, {tv_sec=159264, tv_nsec=851156872}) = 0
[pid 26748] clock_gettime(CLOCK_MONOTONIC, {tv_sec=159264, tv_nsec=851334906}) = 0
[pid 26748] clock_gettime(CLOCK_MONOTONIC, {tv_sec=159264, tv_nsec=851513976}) = 0
[pid 26748] futex(0x2541078, FUTEX_WAKE_PRIVATE, 1) = 1
[pid 10504] <... futex resumed> )       = 0
[pid 26748] futex(0x19cc1e0, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 10504] futex(0x2541034, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 10504] clock_gettime(CLOCK_MONOTONIC, {tv_sec=159264, tv_nsec=852210405}) = 0

Threads like some networking tasks appear to not be working either but did not fail at the same time. I do not have any dialogs or UI blocking code that I can think of.

Does anyone have any thoughts on where to start looking?

Thanks!

What Xojo? What OS / Environment? Linux? Which?

Sample able to replicate?

Sorry, should have been given a bit more information.

Xojo 2023r1, Raspberry Pi OS, Raspberry Pi 4B.

It has happened 3 times over the last month. I am unable to reproduce, only observe when it has locked up. Buttons don’t work, the on screen clock does not count (updated by xojo timer). The app is at 100% CPU, I am only able to kill using SIGKILL, SIGTERM does not work. The system is fully responsive.

Thanks!

Any possibility of your code getting into a loop? Like trying to read something from some device and waiting for something to end and such end never happening?

Overall it’s a pretty complex program, there is always the possibility that it is in a loop waiting for something. I have, however, been very careful to only use asynchronous code where possible to avoid hanging the UI. Anything that is waiting for a resource should yield time back or timeout at some point.