From Andreas Kling to ~awesomekling/serenityos-dev
Indeed, Userspace<T> doesn't work everywhere in the kernel since some interfaces are used both by syscall implementations and by other kernel parts. Another alternative you didn't bring up could be to have syscalls use temporary kernel buffers when calling these interfaces and then copy out of these buffers to the final userspace buffer at the syscall handler level. There's an extra copy here but maybe it's not the end of the world, and it would allow us to keep the "inner" parts of the kernel free from worrying about this. /Andreas
From Andreas Kling to ~awesomekling/serenityos-dev
Generally speaking I'm wary of drive-by contributions from people who are not interested in sticking around and maintaining what they add. However, if SerenityOS regulars pre-file a bunch of bugs with things they would like to see (ideally in the "stuff I would do myself sooner or later anyway" category) I think it could be pretty cool! If nothing comes out of it other than us getting better about filing bugs about neat things to do/fix, that's also a win IMO. :)
From Andreas Kling to ~awesomekling/serenityos-dev
That only fixes up one stack frame, I'm saying it'd be nice if the asserting function moved to the top of the trace. Also, I think your approach could be simplified: asm volatile("call abort; ret"); No need for the awkward function pointer trickery. :)
From Andreas Kling to ~awesomekling/serenityos-dev
If you've been hacking on SerenityOS for a while you've probably seen backtraces like this: USERSPACE(23) ASSERTION FAILED: index.internal_data() ../Libraries/LibGUI/FileSystemModel.cpp:325 0xdeadc0de Kernel::Scheduler::context_switch(Kernel::Thread*) +183 0xdeadc0de Kernel::Scheduler::pick_next() +1681 0xdeadc0de Kernel::Processor::check_invoke_scheduler() +125 0xdeadc0de Kernel::Thread::die_if_needed() +157 0xdeadc0de syscall_handler +1386 0xdeadc0de syscall_asm_entry +49 0x080d5f29 raise +22 0x080480bd abort +13 0x080d2402 tolower +0
From Andreas Kling to ~awesomekling/serenityos-dev
I figured we could try having a development mailing list for longer discussions that don't really fit on IRC or GitHub. So uh, welcome, this is that list!