The IPC to get cookies has to be synchronous. This causes a triangular deadlock between WebContent, the UI process, and RequestServer if we open a new tab from the UI while WebContent is requesting cookies.
send_sync_but_allow_failure<Messages::WebContentClient::DidRequestCookie>
, waiting for the UI process to respondsend_sync_but_allow_failure<Messages::RequestServer::ConnectNewClient>
, waiting for RequestServer to respondsched_yield
call, so we're spinning on EAGAIN
):ladybird/Userland/Services/RequestServer/ConnectionFromClient.cpp
Lines 94 to 101 in 10acf3f
So it seems to me like there's 2 approaches:
deferred_invoke
? @awesomeklingI'm most reliably able to repro this by navigating to youtube and opening a new tab after a couple seconds.
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too