Coder Social home page Coder Social logo

landslide-simics's People

Contributors

bblum avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

landslide-simics's Issues

mutex_blocking code is busted

Last spring I moved the line

s->cur_agent->blocked_on_tid = target_tid;

to inside the if statement if (s->cur_agent->blocked_on_addr == -1), in commit a5223ff. I don't know why I did this, and it breaks pobbles mutexes, so I am moving it back out again. What is the deal?

Until then I may just have to say, yielding mutexes are not supported (unless they are identical to pobbles).

support for multiple html output files in 1 run

currently the glue scripts decide what filename to use for HTML output in 1 place, when you first begin running landslide (in config.simics).

in the future, landslide will need to continue running after finding a bug, potentially emitting several preemption traces for one run. the current html filename logic will be inadequate.

intelligently detect when interrupts-off has been "leaked"

if interrupts-off gets leaked indefinitely past the context switch exit point, landslide will not be able to continue its schedule-in-flight approach. interrupts may remain off until the inadvertently-switched-to thread does a voluntary reschedule of its own, which will cause all kinds of landslide asserts to trip "some time later".

this happened with 2 groups in S14.

it would be much better if landslide could somehow decide "the thread has returned out of the context switcher, and a schedule is in-flight and this thread is not our target, and interrupts have been off for too long".

have landslide track commits in student code when finding bugs

as dave says:

Landslide could be set up so that instead of running against whatever is in the current directory it would instead run against a specific git/hg hash in a repo in 410 AFS space. Then you could look at their next couple of commits to see how they fixed a given problem!

I am suggesting that when a student runs Landslide you log the revision and what it told them. Then you can later see how they changed their code.

"keeping schedule in flight" tick gets taken too early, can overflow stack

The stack overflow can only happen in presence of another bug which causes the scheduler to try to fly to a nonrunnable thread. So it would otherwise be an infinite loop. So this is a minor bug. But see comment:

720                                 // XXX: this seems to get taken too soon? change
721                                 // it somehow to cause_.._immediately. and then
722                                 // see the asserts/comments in the action
723                                 // handling_timer sections above.
724                                 /* some kernels (pathos) still have interrupts
725                                  * off or scheduler locked at this point; so
726                                  * properties of !R */
727                                 if (interrupts_enabled(ls->cpu0) &&
728                                     kern_ready_for_timer_interrupt(ls->cpu0)) {
729                                         lsprintf(DEV, "keeping schedule in-"
730                                                   "flight at 0x%x\n", ls->eip);
731                                         cause_timer_interrupt(ls->cpu0);
732                                         s->entering_timer = true;
733                                         s->delayed_in_flight = false;

anybody_alive call when avoiding timer interrupt causes misleading message

[SCHEDULE]      A timer tick that wasn't ours (0x1014d5).
[TEST]          Somebody's alive: Interrupts off.

of course interrupts are off -- you just entered the timer interrupt handler. it really wants to know the state of interrupts before the timer handler was entered, which naturally would be on. probably need to deal with this by passing anybody_alive a flag saying whether to skip checking EFL_IF - hacky, but it's not like we could TRAVEL BACK IN TIME or anything ;)

output state space estimates in tabular traces

the problem with this is that calling estimate() actually performs updates of the value across the history of the current branch before outputting the estimated value, so it is not stable to call it multiple times in the same branch.

so before implementing this, will need to figure out a solution to deal with emitting multiple foundabug traces across a single exploration.

deal with interrupts being off after a JFR for "way too long".

if interrupts-off state gets leaked, two context switches can go by before interrupts will come back on, and landslide will not have been able to save_setjmp to maintain the 1-thread-per-transition invariant.

can we somehow detect this, and found_a_bug when it happens.

otherwise, we will trip the invariant assertion in arbiter, in a cryptic and unhelpful way.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.