alibaba / PhotonLibOS

Probably the fastest coroutine lib in the world!

Home Page:https://PhotonLibOS.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

photon.fini() will hang with iouring master engine and signalfd

yuchen0cc opened this issue · comments

photon.fini() will hang with iouring master engine and signalfd.

It can be produced by test:

TEST(IouringTest, Init) {
    auto ret = photon::init(photon::INIT_EVENT_IOURING | photon::INIT_EVENT_SIGNAL, photon::INIT_IO_NONE);
    DEFER(photon::fini());
    EXPECT_EQ(0, ret);
}

It blocks on https://github.com/alibaba/PhotonLibOS/blob/main/io/iouring-wrapper.cpp#L344 and m_eventfd is not non-blocked.

I tested your code in 6.4.12-1.el8.elrepo.x86_64 kernel.

It didn't hang.

@beef9999 It happens to be a kernel related issue.
The above test hangs in 4.19.91 and 5.10.134, but works well in 5.15.0, 5.18.15 and 6.6.2.

I will close this issue.