Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[INFO] syncConstraints: Incorrect constraints are inserted #6

Open
enlighten5 opened this issue Mar 22, 2021 · 2 comments
Open

[INFO] syncConstraints: Incorrect constraints are inserted #6

enlighten5 opened this issue Mar 22, 2021 · 2 comments

Comments

@enlighten5
Copy link

Hi!

I noticed that when running SymQEMU, the following error shows up in the log.
[INFO] syncConstraints: Incorrect constraints are inserted
Any idea about what's the reason and how to solve it? (run SymQEMU on objdump and specint benchmarks and observe the same error.)

Thanks!

@vanhauser-thc
Copy link

I see this also with very simple targets. no clue why.

@sebastianpoeplau
Copy link
Collaborator

What the message means is that SymQEMU is trying to add path constraint that contradicts the already asserted statements. For example, you would see this error if x > 7 was already part of the constraints and SymQEMU then tried to add x == 2.

Usually, it's a sign that we've implemented an instruction incorrectly or that we're missing something. The latter is typically the case when uninstrumented code (such as QEMU's helpers for some CISC instructions) modifies memory that is subsequently read by instrumented code (which then makes wrong assumptions about its content). A minimal example would be very helpful to debug the issue.

rmalmain pushed a commit to rmalmain/symqemu that referenced this issue Apr 22, 2024
…ng ARM_FEATURE_PMU

It doesn't make sense to read the value of MDCR_EL2 on a non-A-profile
CPU, and in fact if you try to do it we will assert:

eurecom-s3#6  0x00007ffff4b95e96 in __GI___assert_fail
    (assertion=0x5555565a8c70 "!arm_feature(env, ARM_FEATURE_M)", file=0x5555565a6e5c "../../target/arm/helper.c", line=12600, function=0x5555565a9560 <__PRETTY_FUNCTION__.0> "arm_security_space_below_el3") at ./assert/assert.c:101
eurecom-s3#7  0x0000555555ebf412 in arm_security_space_below_el3 (env=0x555557bc8190) at ../../target/arm/helper.c:12600
eurecom-s3#8  0x0000555555ea6f89 in arm_is_el2_enabled (env=0x555557bc8190) at ../../target/arm/cpu.h:2595
eurecom-s3#9  0x0000555555ea942f in arm_mdcr_el2_eff (env=0x555557bc8190) at ../../target/arm/internals.h:1512

We might call pmu_counter_enabled() on an M-profile CPU (for example
from the migration pre/post hooks in machine.c); this should always
return false because these CPUs don't set ARM_FEATURE_PMU.

Avoid the assertion by not calling arm_mdcr_el2_eff() before we
have done the early return for "PMU not present".

This fixes an assertion failure if you try to do a loadvm or
savevm for an M-profile board.

Cc: [email protected]
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2155
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: [email protected]
(cherry picked from commit ac1d88e)
Signed-off-by: Michael Tokarev <[email protected]>
rmalmain pushed a commit to rmalmain/symqemu that referenced this issue Aug 9, 2024
…coroutine()' failed.

bdrv_activate_all() should not be called from the coroutine context, move
it to the QEMU thread colo_process_incoming_thread() with the bql_lock
protected.

The backtrace is as follows:
 eurecom-s3#4  0x0000561af7948362 in bdrv_graph_rdlock_main_loop () at ../block/graph-lock.c:260
 eurecom-s3#5  0x0000561af7907a68 in graph_lockable_auto_lock_mainloop (x=0x7fd29810be7b) at /patch/to/qemu/include/block/graph-lock.h:259
 eurecom-s3#6  0x0000561af79167d1 in bdrv_activate_all (errp=0x7fd29810bed0) at ../block.c:6906
 eurecom-s3#7  0x0000561af762b4af in colo_incoming_co () at ../migration/colo.c:935
 eurecom-s3#8  0x0000561af7607e57 in process_incoming_migration_co (opaque=0x0) at ../migration/migration.c:793
 eurecom-s3#9  0x0000561af7adbeeb in coroutine_trampoline (i0=-106876144, i1=22042) at ../util/coroutine-ucontext.c:175
 eurecom-s3#10 0x00007fd2a5cf21c0 in  () at /lib64/libc.so.6

Cc: [email protected]
Cc: Fabiano Rosas <[email protected]>
Closes: https://gitlab.com/qemu-project/qemu/-/issues/2277
Fixes: 2b3912f ("block: Mark bdrv_first_blk() and bdrv_is_root_node() GRAPH_RDLOCK")
Signed-off-by: Li Zhijian <[email protected]>
Reviewed-by: Zhang Chen <[email protected]>
Tested-by: Zhang Chen <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Peter Xu <[email protected]>
(cherry picked from commit 2cc637f)
Signed-off-by: Michael Tokarev <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants