- For more information about how the guard pages are used in the kernel to detect stacko check out this article from the kernel docs docs.kernel.org/mm/vmalloced-kernel-stacks.html - In this video I demonstrate with x64, but on other architectures (like ARM for example) this may work differently
It's funny how the man addresses a very specific programming "prank" that only people familiar with IT can understand, yet he still explains that you should press Enter to opt out of an option in the GUI. :)
@@BenjaminWheeler0510technically it could keep going but it’s likely memory corruption would cause either an infinite loop or a number of CPU exceptions
If you remove the handler for CPU exceptions, they generate a double fault, if you remove that, or the code for it is unreachable (for instance, you get a segmentation fault when trying to reach that code) then it will generate a triple fault and reboot your machine
Such a fun video, I’ve never really thought too much about kernel issues like this. It’s very easy to forget it even exists and has to follow the same rules when developing user mode software
Yep, redirection to the serial port is a good one. Used it when I fixed a NIC driver for SCO UNIX way back in the good old days. Just capture the output to a file and you have an excellent source of information without cluttering your console. I redirected the debug messages only…
Didn't expect to be taken on such a journey in 5 minutes! Thanks for showing how easy qemu is, this might stir some inspiration for potential kernel hackers, I guess!
Hi @Nir Licthman this is a wonderful video... Can u make a sereis on the linux kernel internals the code walk through and steps that the kernel takes from start to finish
How do you know in depth knowledge about these things. I wonder i can learn that too. But these things are very much complicated and goes over my head. I am just a normal web back developer.Really your videos are very good.
Good video!!!! Nir, I have a question please: I run this program on Windows and Linux, on Linux it takes less than 1 second and on Windows it takes almost 2 minutes. Why does that happen? #include #define MAX 1000000 int main(int argc, char *argv) { int i; for(i=1;i
Try make a video where you disable the ISR(Interrupt service routine) in charge to manage division by zero, then try to run such division in user space and see what happens.
Well obviously the CPU can't handle it so the ISR is triggered. So it depends on _how_ you remove it. Remove the code in it? Handler does nothing, you have a CPU bound infinite loop that the scheduler can still deal with. Remove it from the ISR table? Kernel panic (double fault -- invalid ISR entry). You can also try to not change the kernel and register a signal handler for SIGFPU in the userspace, and if you do nothing in that you're gonna again have the infinite loop.
@@iDontProgramInCpp If an IRQ handler is invalid then the double fault shall be called. If the double fault handler is also invalid a triple fault, which leads to an immediate CPU core/thread reset, occurs.
Next video create a kernel module from scratch but something interesting, like a kernel mod to put a camera filiter or a voice filter or a custom keyboard mapping something like that would be really fun