diff options
Diffstat (limited to 'results/classifier/zero-shot/108/other/2703')
| -rw-r--r-- | results/classifier/zero-shot/108/other/2703 | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/results/classifier/zero-shot/108/other/2703 b/results/classifier/zero-shot/108/other/2703 new file mode 100644 index 00000000..6a3ad16b --- /dev/null +++ b/results/classifier/zero-shot/108/other/2703 @@ -0,0 +1,55 @@ +device: 0.874 +performance: 0.770 +files: 0.709 +boot: 0.705 +graphic: 0.682 +socket: 0.672 +PID: 0.662 +vnc: 0.624 +network: 0.594 +semantic: 0.457 +debug: 0.436 +KVM: 0.401 +permissions: 0.352 +other: 0.262 + +ptimer period sporadically too long +Description of problem: +A ptimer in a custom device with a frequency of 10kHz is sporadically called after more than 100,000ns in virtual time have elapsed. + +With a icount shift of 4 or 5 this happens almost everytime before the linux guest can even finish booting. + +With a shift of 0 this happens very rarely, but it does occur from time to time. +Steps to reproduce: +1. setup a ptimer with a frequency of 10kHz and assert that the time passed between callbacks is exactly 100,000ns +2. run +3. wait for boom +Additional information: +``` +// Timer setup +ptimer_transaction_begin(state->timer); + +ptimer_set_freq(state->timer, 10000); +ptimer_run(state->timer, 0); + +ptimer_transaction_commit(state->timer); +``` +``` +// timer callback +int64_t now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); +static int64_t last = 0; +if (last > 0) +{ + if (now - last != 100000) + { + fprintf(stderr, "error tick %ld after %ld is incorrect: %ld\n", now, last, now - last); + assert(0); + } +} +last = now; +``` + +``` +error tick 47867503135 after 47867400000 is incorrect: 103135 +qemu-system-x86_64: ../...file.c:119: timer_callback: Assertion `0' failed. +``` |
