This PR adds split_lock_detect to the preserved_arguments list in anaconda.conf.
Currently, on recent kernels, if an x86 split lock is detected, it can cause the kernel to crash (#AC: crashing the ...
Yeah, LLMs are gonna spin their wheels hard when it comes to testing anything at the kernel/os level, if you dont have automated testing with a virtual machine setup to actually be able to replicate a bug, you 100% just cannot test anything they produce or say
As soon as you have the ability to go “Okay we have a failing test, make it pass”, the LLMs get a lot less stupid, because instead of just randomly fumbling around and guessing, they have actual feedback to iterate on and can actually chew on it til they fix the issue or give up.
Not just automated testing but, for CodeGen to really work ‘agentic’ like:
You need that automated test case to trigger the misbehavior 100% of the time (often, the act of figuring out how to trigger the misbehavior means you already know the fix, but not always)
That automated test case needs to be succinct and as much as possible, feed only the problematic output back to the CodeGen. CodeGen can easily get distracted by irrelevant input
That automated test needs to be very quick from time to code change to test case completion. Even with everything just right, expect the CodeGen to basically thrash around guessing things that sound right but to no avail. Most attempts summed up as:
"Ok, the problem is absolutely caused by <plausible but useless prose>, and here is the definite fix <code changes that do nothing at all for the error> and it is complete but just double checking… <test fails> Ok, that didn’t quite fully fix it… see next attempt. So a long test case can make it take an eternity as the CodeGen has to wait and run it over and over and over again, while a human might actually reason through it.
You need to let the token hose go. It’s guessing and it can take quite a few guesses to get right.
Be prepared for pointless code changes along the way. It makes guesses and often leaves the wrong guesses in, doing nothing at all to help the problem, but potentially having side effects. It decides that while it didn’t work, it must have been a part of the solution, and that it must be left in.
Consequently, you better have an amazing test suite to capture the likely side effects of those spurious changes, or be prepared to unwind the progress and extricate the result manually.
Absolutely 100% all of this, though with a lot of other tricks like caveman mode and careful skill files and helper scripts to help the agent quickly surgical extract out just the useful output, you can substantially reduce token burn and improve its memory.
As well as carefully having it rollback changes everytime a fix doesn’t work, and having ut keep a markdown file log of each fix it tried and the results, so it can review each thing it tried previously.
Reproducing the bug with an automated test is harder, its code you can run that tests your other code.
But allows you to just 1 click run it and get a yes/no “is this still broken” output without having to manually reproduce it by hand each time.
Whats important is this is in the domain of what LLMs can actually work with, the output of the test is something they can parse and iterate on until it works.
They execute the command to run the test, check the output, and keep working til the test passes.
They can add additional tests to help isolate the problem, or strip down the existing test until its doing the absolute bare min steps to reproduce, in order to narrow the scope of whats causing it.
But when your test involves stuff running in the kernel of an OS, your automated tests meed to effectively be code you write that bootstraps a virtual machine up and manipulates and observes that second machines kernel…
You can do it, but its one of the most complicated forms of automated tests to design and run!
Yeah, LLMs are gonna spin their wheels hard when it comes to testing anything at the kernel/os level, if you dont have automated testing with a virtual machine setup to actually be able to replicate a bug, you 100% just cannot test anything they produce or say
As soon as you have the ability to go “Okay we have a failing test, make it pass”, the LLMs get a lot less stupid, because instead of just randomly fumbling around and guessing, they have actual feedback to iterate on and can actually chew on it til they fix the issue or give up.
Not just automated testing but, for CodeGen to really work ‘agentic’ like:
Absolutely 100% all of this, though with a lot of other tricks like caveman mode and careful skill files and helper scripts to help the agent quickly surgical extract out just the useful output, you can substantially reduce token burn and improve its memory.
As well as carefully having it rollback changes everytime a fix doesn’t work, and having ut keep a markdown file log of each fix it tried and the results, so it can review each thing it tried previously.
I’m not a programmer, but isn’t reproducing a reported bug step 1?
Reproducing the bug with an automated test is harder, its code you can run that tests your other code.
But allows you to just 1 click run it and get a yes/no “is this still broken” output without having to manually reproduce it by hand each time.
Whats important is this is in the domain of what LLMs can actually work with, the output of the test is something they can parse and iterate on until it works.
They execute the command to run the test, check the output, and keep working til the test passes.
They can add additional tests to help isolate the problem, or strip down the existing test until its doing the absolute bare min steps to reproduce, in order to narrow the scope of whats causing it.
But when your test involves stuff running in the kernel of an OS, your automated tests meed to effectively be code you write that bootstraps a virtual machine up and manipulates and observes that second machines kernel…
You can do it, but its one of the most complicated forms of automated tests to design and run!