Author :
KyotoVania
Date :
2026-05-06 12:16:46
Hash :63d66ba5 Message :[FIX] RACE CONDITION HEAP-USE-AFTER-FREE DANS EVENT_POLL
Heap-use-after-free reproduit en stress sur git.kmx.io en
ASan: thread T21 lit entry->udata dans kc3_event_poll_poll
apres que thread T14 ait free entry via kc3_event_poll_delete.
La race vient du fait que ev.data.ptr stockait le pointeur
de l'entry. Apres epoll_wait (mutex deverrouille pour bloquer)
le pointeur recupere etait deja stale si un autre thread
avait delete l'entry entre temps.
Fix: stocker le fd dans ev.data.fd au moment du
EPOLL_CTL_ADD/MOD, puis dans poll re-acquerir le mutex et
faire entry_find par fd. Si l'entry a disparu pendant la
fenetre, retour propre tag_init_void au lieu de toucher
de la memoire freed.
Bug latent hérité du module epoll/ original (meme pattern,
pas detecte parce que stress moins agressif sur les autres
apps). La branche HAVE_KQUEUE n'est pas affectee, kqueue
utilise event.udata natif sans struct user-space.