Okay, it seems it was my fault, I was being clumsy, Anyway, I suspect that
sometimes the process somehow ended.
GDB was stuck, so as you said, I pressed CTRL+C and did a backtrace:
```gdb
Downloading separate debug info for /usr/lib/libvorbisenc.so.2
Downloading separate debug info for /usr/lib/libFLAC.so.12
[New Thread 0x7fffe37fe6c0 (LWP 1775079)]
[Detaching after fork from child process 1775080]
[New Thread 0x7ffff26306c0 (LWP 1775081)]
[Thread 0x7ffff1cd66c0 (LWP 1775046) exited]
bt
^C
Thread 1 "geany" received signal SIGINT, Interrupt.
0x00007ffff7b13c0f in __GI___poll (fds=0x555555e7fb00, nfds=6, timeout=-1) at
../sysdeps/unix/sysv/linux/poll.c:29
Downloading source file
/usr/src/debug/glibc/glibc/io/../sysdeps/unix/sysv/linux/poll.c
29 return SYSCALL_CANCEL (poll, fds, nfds, timeout);
(gdb) bt
#0 0x00007ffff7b13c0f in __GI___poll (fds=0x555555e7fb00, nfds=6, timeout=-1)
at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007ffff6d0b17f in () at /usr/lib/libglib-2.0.so.0
#2 0x00007ffff6cadc7f in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#3 0x00007ffff73d8e4f in gtk_main () at /usr/lib/libgtk-3.so.0
#4 0x00007ffff7c88293 in main_lib () at /usr/lib/libgeany.so.0
#5 0x00007ffff7a39850 in __libc_start_call_main
(main=main@entry=0x555555555020, argc=argc@entry=1,
argv=argv@entry=0x7fffffffd988) at ../sysdeps/nptl/libc_start_call_main.h:58
#6 0x00007ffff7a3990a in __libc_start_main_impl (main=0x555555555020, argc=1,
argv=0x7fffffffd988, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffd978)
at ../csu/libc-start.c:360
#7 0x0000555555555055 in ()
```
I've been researching a bit, it seems this function waits for changes in open
files, the source code compatible with the backtrace is:
```c
int
__poll (struct pollfd *fds, nfds_t nfds, int timeout)
{
#ifdef __NR_poll
return SYSCALL_CANCEL (poll, fds, nfds, timeout);
#else
struct timespec timeout_ts;
struct timespec *timeout_ts_p = NULL;
if (timeout >= 0)
{
timeout_ts.tv_sec = timeout / 1000;
timeout_ts.tv_nsec = (timeout % 1000) * 1000000;
timeout_ts_p = &timeout_ts;
}
return SYSCALL_CANCEL (ppoll, fds, nfds, timeout_ts_p, NULL, 0);
#endif
}
```
I haven't been able to find out where `_NR_poll` is defined, though it seems it
has to do with certain types of kernels.
So, I'd say that Geany wants to check if any open file has changed and is
waiting for `poll()` to return, but for some reason this never happens.
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/3447#issuecomment-1610946624
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/issues/3447/[email protected]>