ladybird/Kernel
Brian Gianforcaro 70f3fa2dd2 Kernel: Set new process name in do_exec before waiting for the tracer
While investigating why gdb is failing when it calls `PT_CONTINUE`
against Serenity I noticed that the names of the programs in the
System Monitor didn't make sense. They were seemingly stale.

After inspecting the kernel code, it became apparent that the sequence
occurs as follows:

    1. Debugger calls `fork()`
    2. The forked child calls `PT_TRACE_ME`
    3. The `PT_TRACE_ME` instructs the forked process to block in the
       kernel waiting for a signal from the tracer on the next call
       to `execve(..)`.
    4. Debugger waits for forked child to spawn and stop, and then it
       calls `PT_ATTACH` followed by `PT_CONTINUE` on the child.
    5. Currently the `PT_CONTINUE` fails because of some other yet to
       be found bug.
    6. The process name is set immediately AFTER we are woken up by
       the `PT_CONTINUE` which never happens in the case I'm debugging.

This chain of events leaves the process suspended, with the name  of
the original (forked) process instead of the name we inherit from
the `execve(..)` call.

To avoid such confusion in the future, we set the new name before we
block waiting for the tracer.
2022-02-19 18:04:32 -08:00
..
API Kernel/Profiling: Add profiling to read syscall 2022-02-14 11:38:13 +01:00
Arch Kernel: Add 'RegisterState' & 'KString::try_create' stubs for aarch64 2022-02-18 01:48:18 +01:00
Bus AK: Make Bitmap construction OOM-fallible 2022-02-11 17:49:46 +02:00
Devices Kernel: Increase i8042 IO attempt counts, again 2022-02-19 13:37:51 +00:00
FileSystem AK+Kernel: Specialize Trie for NNOP<KString> and use it in UnveilNode 2022-02-16 22:21:37 +01:00
Firmware Kernel: Change static constexpr variables to constexpr where possible 2022-02-09 21:04:51 +00:00
Graphics Kernel: Don't enable write-combine for the Bochs framebuffer device 2022-02-18 10:30:42 +01:00
Heap Kernel: Put kmalloc heap expansion debug spam behind KMALLOC_DEBUG 2022-02-05 22:50:39 +01:00
Interrupts Kernel/Interrupts: Remove stale MSIHandler class 2022-02-05 18:13:02 +00:00
Library Kernel: Remove dead code from ThreadSafeWeakPtr 2022-02-13 23:02:57 +01:00
Locking Kernel: Update terminology around Thread's "blocking mutex" 2022-01-30 16:21:59 +01:00
Memory Kernel: Make Inode::set_shared_vmobject() OOM-fallible 2022-02-14 11:35:20 +01:00
Net Kernel: Lock socket Mutex when servicing IPv4Socket ioctls 2022-02-18 02:22:12 +02:00
Prekernel Kernel: Change static constexpr variables to constexpr where possible 2022-02-09 21:04:51 +00:00
Storage Kernel: Remove useless partition UUID length check 2022-02-16 22:21:37 +01:00
Syscalls Kernel: Set new process name in do_exec before waiting for the tracer 2022-02-19 18:04:32 -08:00
Tasks Kernel: Remove unnecessary includes from Thread.h 2022-01-30 16:21:59 +01:00
Time Kernel: Create the time page region before initializing the timers 2022-01-18 21:00:46 +02:00
TTY Kernel: Change static constexpr variables to constexpr where possible 2022-02-09 21:04:51 +00:00
AddressSanitizer.cpp
AddressSanitizer.h
Assertions.h
AtomicEdgeAction.h
BootInfo.h
CMakeLists.txt Kernel: Stop compiling AK::String and friends into the Kernel 2022-02-16 22:21:37 +01:00
CMOS.cpp
CMOS.h
CommandLine.cpp Kernel: Add nvme_poll command line parameters 2022-02-02 18:26:59 +01:00
CommandLine.h Kernel: Add nvme_poll command line parameters 2022-02-02 18:26:59 +01:00
Coredump.cpp Kernel: Stop trying to write unmapped Process regions into CoreDumps 2022-02-11 17:49:46 +02:00
Coredump.h
Debug.h.in AK+Kernel: Alphabetize debug macros 2022-02-09 17:59:19 +00:00
DoubleBuffer.cpp
DoubleBuffer.h
embedmap.sh
Forward.h
FutexQueue.cpp
FutexQueue.h
GlobalProcessExposed.cpp AK+Kernel: Return KString from MACAddress::to_string() in the Kernel 2022-02-16 22:21:37 +01:00
init.cpp Kernel: Fixed argument passing for profiling_enable syscall 2022-02-19 11:37:02 +01:00
KBuffer.h Kernel: Propagate overflow errors from Memory::page_round_up 2021-12-28 23:08:50 +01:00
KBufferBuilder.cpp Kernel+AK: Eliminate a couple of temporary String allocations 2021-12-30 14:16:03 +01:00
KBufferBuilder.h Kernel: Make Thread::backtrace() fallible using KString 2022-01-12 16:09:09 +02:00
KLexicalPath.cpp
KLexicalPath.h
kprintf.cpp Kernel: Instantiate a TextModeConsole early on if there's no framebuffer 2022-02-09 21:05:48 +00:00
kstdio.h
KString.cpp
KString.h Kernel: Make {Nonnull,}OwnPtr<KString> hash compatible with StringView 2022-01-29 23:01:23 +02:00
KSyms.cpp Kernel: Remove unnecessary includes from Thread.h 2022-01-30 16:21:59 +01:00
KSyms.h
linker.ld Kernel+Toolchain: Use .init_array section for global constructors 2022-01-24 10:41:47 +00:00
MiniStdLib.cpp
mkmap.sh Kernel: Use the toolchain's nm in mkmap.sh 2021-12-30 18:10:51 +01:00
Multiboot.h Kernel: Only use multiboot framebuffer details if present 2022-01-06 22:34:11 +01:00
Panic.cpp Kernel: Ensure that CommandLine is initialized before choosing PanicMode 2022-01-21 19:34:10 +02:00
Panic.h
PerformanceEventBuffer.cpp Kernel/Profiling: Add profiling to read syscall 2022-02-14 11:38:13 +01:00
PerformanceEventBuffer.h Kernel/Profiling: Add profiling to read syscall 2022-02-14 11:38:13 +01:00
PerformanceManager.h Kernel/Profiling: Add profiling to read syscall 2022-02-14 11:38:13 +01:00
PhysicalAddress.h
Process.cpp AK+Kernel: Specialize Trie for NNOP<KString> and use it in UnveilNode 2022-02-16 22:21:37 +01:00
Process.h Kernel: Fixed argument passing for profiling_enable syscall 2022-02-19 11:37:02 +01:00
ProcessExposed.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
ProcessExposed.h Kernel: Remove unnecessary includes from Thread.h 2022-01-30 16:21:59 +01:00
ProcessGroup.cpp
ProcessGroup.h
ProcessProcFSTraits.cpp Kernel+SystemServer: Add /dev/tty 2021-12-12 22:32:35 +01:00
ProcessSpecificExposed.cpp Kernel: Make Process::procfs_get_pledge_stats OOM-fallible 2022-02-16 22:21:37 +01:00
Random.cpp Kernel: Make KernelRng not inherit from Lockable 2021-12-26 21:22:59 +01:00
Random.h Everywhere: Convert ByteBuffer factory methods from Optional -> ErrorOr 2022-01-24 22:36:09 +01:00
RTC.cpp Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
RTC.h
SanCov.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Scheduler.cpp Kernel: Don't mark current thread as inactive after successful exec() 2022-01-30 16:21:59 +01:00
Scheduler.h Kernel: Remove unused bool return values from scheduler functions 2022-01-30 16:21:59 +01:00
Sections.h Kernel: Move userspace virtual address range base to 0x10000 2021-12-22 00:02:36 -08:00
StdLib.cpp Kernel: Remove unnecessary includes from Thread.h 2022-01-30 16:21:59 +01:00
StdLib.h
Syscall.cpp Kernel: Change static constexpr variables to constexpr where possible 2022-02-09 21:04:51 +00:00
Thread.cpp Kernel: Use try_make_weak_ptr() instead of make_weak_ptr() 2022-02-13 23:02:57 +01:00
Thread.h Kernel: Update terminology around Thread's "blocking mutex" 2022-01-30 16:21:59 +01:00
ThreadBlockers.cpp Kernel: Move Thread::block<BlockerType>() out of the Thread.h header 2022-01-30 16:21:59 +01:00
ThreadTracer.cpp
ThreadTracer.h Kernel: Add missing includes in ThreadTracer and WorkQueue 2021-12-30 14:32:17 +01:00
TimerQueue.cpp
TimerQueue.h
UBSanitizer.cpp AK+Kernel+LibSanitizer: Store "ubsan-is-deadly" flag as Atomic<bool> 2022-02-03 16:11:26 +01:00
UnixTypes.h
UserOrKernelBuffer.cpp
UserOrKernelBuffer.h Kernel+LibC: Move errno definitions to Kernel/API/POSIX 2021-12-16 22:21:35 +03:30
VirtualAddress.h
WaitQueue.cpp
WaitQueue.h
WorkQueue.cpp
WorkQueue.h Kernel: Add missing includes in ThreadTracer and WorkQueue 2021-12-30 14:32:17 +01:00