mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-11 02:13:56 +09:00
LibCore: Allow inspecting any process launched with MAKE_INSPECTABLE=1
For now, EventLoop and Application still have a make_inspectable parameter, so that when working on an application you can temporarily hard-code it to be inspectable rather than having to set the env var each time.
This commit is contained in:
parent
d20ff6c891
commit
f240def414
Notes:
sideshowbarker
2024-07-17 11:43:26 +09:00
Author: https://github.com/AtkinsSJ
Commit: f240def414
Pull-request: https://github.com/SerenityOS/serenity/pull/13707
Reviewed-by: https://github.com/alimpfard
2 changed files with 12 additions and 7 deletions
|
@ -18,7 +18,8 @@ $ Inspector [pid]
|
|||
|
||||
Inspector facilitates process inspection via RPC.
|
||||
|
||||
The inspected process must have previously allowed the
|
||||
To inspect a process, it must have `MAKE_INSPECTABLE=1` in its environment,
|
||||
and it must have previously allowed the
|
||||
[`accept`(2)](help://man/2/accept) system call with
|
||||
[`pledge`(2)](help://man/2/pledge) to allow inspection
|
||||
via UNIX socket.
|
||||
|
|
|
@ -330,12 +330,16 @@ EventLoop::EventLoop([[maybe_unused]] MakeInspectable make_inspectable)
|
|||
s_event_loop_stack->append(*this);
|
||||
|
||||
#ifdef __serenity__
|
||||
if (getuid() != 0
|
||||
&& make_inspectable == MakeInspectable::Yes
|
||||
// FIXME: Deadlock potential; though the main loop and inspector server connection are rarely used in conjunction
|
||||
&& !s_inspector_server_connection.with_locked([](auto inspector_server_connection) { return inspector_server_connection; })) {
|
||||
if (!connect_to_inspector_server())
|
||||
dbgln("Core::EventLoop: Failed to connect to InspectorServer");
|
||||
if (getuid() != 0) {
|
||||
if (getenv("MAKE_INSPECTABLE") == "1"sv)
|
||||
make_inspectable = Core::EventLoop::MakeInspectable::Yes;
|
||||
|
||||
if (make_inspectable == MakeInspectable::Yes
|
||||
// FIXME: Deadlock potential; though the main loop and inspector server connection are rarely used in conjunction
|
||||
&& !s_inspector_server_connection.with_locked([](auto inspector_server_connection) { return inspector_server_connection; })) {
|
||||
if (!connect_to_inspector_server())
|
||||
dbgln("Core::EventLoop: Failed to connect to InspectorServer");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue