-
Notifications
You must be signed in to change notification settings - Fork 78
Open
Description
I have an existing codebase that runs cleanly on FreeBSD using native kqueue.
Due to deployment requirements I’m now running the same software on Linux (using libkqueue).
After minimal porting changes, most things work, but one of my daemons repeatedly crashes due to a SIGSEGV during knote deletion.
Now I'm running the last codebase, compiled manually.
Running using gdb it gives this error.
epoll_fd_state_del (fds_p=fds_p@entry=0x7fffffffe1b8, kn=kn@entry=0x5555556440a0, ev=<optimized out>) at /usr/brbyte/libkqueue/src/linux/platform.c:1369
1369 /usr/brbyte/libkqueue/src/linux/platform.c: No such file or directory.
(gdb) bt
#0 epoll_fd_state_del (fds_p=fds_p@entry=0x7fffffffe1b8, kn=kn@entry=0x5555556440a0, ev=<optimized out>) at /usr/brbyte/libkqueue/src/linux/platform.c:1369
#1 0x00007ffff7be836c in epoll_update (op=<optimized out>, filt=<optimized out>, kn=0x5555556440a0, ev=<optimized out>, delete=<optimized out>) at /usr/brbyte/libkqueue/src/linux/platform.c:1564
#2 0x00007ffff7be577a in knote_delete (filt=0x5555555cb818, kn=kn@entry=0x5555556440a0) at /usr/brbyte/libkqueue/src/common/knote.c:149
#3 0x00007ffff7be4a95 in kevent_copyin_one (src=0x7ffff54f8050, kq=0x5555555cb800, out=<synthetic pointer>) at /usr/brbyte/libkqueue/src/common/kevent.c:235
#4 kevent_copyin (nevents=512, eventlist=<optimized out>, nchanges=4, changelist=0x7ffff54f8010, kq=0x5555555cb800) at /usr/brbyte/libkqueue/src/common/kevent.c:284
#5 kevent (kqfd=<optimized out>, changelist=0x7ffff54f8010, nchanges=4, eventlist=0x7ffff5519010, nevents=512, timeout=timeout@entry=0x5555555cf028)
at /usr/brbyte/libkqueue/src/common/kevent.c:423
#6 0x00007ffff7c9f47c in EvKQBaseKEventInvoke (kq_base=0x5555555cd950) at event/core/ev_kq_base.c:1906
#7 EvKQInvokeKQueueOnce (kq_base=kq_base@entry=0x5555555cd950, timeout_ms=<optimized out>) at event/core/ev_kq_base.c:339
#8 0x00007ffff7c9fea4 in EvKQBaseDispatchOnce (kq_base=kq_base@entry=0x5555555cd950, timeout_ms=timeout_ms@entry=100) at event/core/ev_kq_base.c:226
#9 0x00007ffff7ca013c in EvKQBaseDispatch (kq_base=0x5555555cd950, timeout_ms=timeout_ms@entry=100) at event/core/ev_kq_base.c:311
#10 0x000055555555a13c in main (argc=<optimized out>, argv=<optimized out>) at web_authd.c:103
(gdb)
Something in Linux that can cause this? All the time I see this the nevents is 512. Is this related with MAX_KEVENT? Is there some guidance? To test, to change, to share in the code...
Most of the code I use in my base is in https://github.com/BrByte/brb_framework/tree/master/libbrb_core/event/core
Metadata
Metadata
Assignees
Labels
No labels