The problem is that we're now generating many more temporaries
than before, and running out of the statically allocated amount.
Changing a debug assert to a full assert will change the SEGV
into an ABRT. :-)
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 8f8badb61c..c376afe56a 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -1207,7 +1207,7 @@ void tcg_func_start(TCGContext *s)
static inline TCGTemp *tcg_temp_alloc(TCGContext *s)
{
int n = s->nb_temps++;
- tcg_debug_assert(n < TCG_MAX_TEMPS);
+ g_assert(n < TCG_MAX_TEMPS);
return memset(&s->temps[n], 0, sizeof(TCGTemp));
}
The problem can be worked around temporarily by increasing the
number of temporaries:
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index 504c5e9bb0..8fe32bb03c 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -275,7 +275,7 @@ typedef struct TCGPool {
#define TCG_POOL_CHUNK_SIZE 32768
-#define TCG_MAX_TEMPS 512
+#define TCG_MAX_TEMPS 2048
#define TCG_MAX_INSNS 512
/* when the size of the arguments of a called function is smaller than
But a proper solution is to dynamically allocate the temps.
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1912065
Title:
Segfaults in tcg/optimize.c:212 after commit
7c79721606be11b5bc556449e5bcbc331ef6867d
Status in QEMU:
In Progress
Bug description:
QEMU segfaults to NULL dereference in tcg/optimize.c:212 semi-randomly
after commit 7c79721606be11b5bc556449e5bcbc331ef6867d
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000020
Exception Note: EXC_CORPSE_NOTIFY
...
Thread 4 Crashed:
0 qemu-system-ppc 0x0000000109cd26d2 tcg_opt_gen_mov + 178 (optimize.c:212)
1 qemu-system-ppc 0x0000000109ccf838 tcg_optimize + 5656
2 qemu-system-ppc 0x0000000109c27600 tcg_gen_code + 64 (tcg.c:4490)
3 qemu-system-ppc 0x0000000109c17b6d tb_gen_code + 493 (translate-all.c:1952)
4 qemu-system-ppc 0x0000000109c16085 tb_find + 41 (cpu-exec.c:454) [inlined]
5 qemu-system-ppc 0x0000000109c16085 cpu_exec + 2117 (cpu-exec.c:810)
6 qemu-system-ppc 0x0000000109c09ac3 tcg_cpus_exec + 35 (tcg-cpus.c:57)
7 qemu-system-ppc 0x0000000109c75edd rr_cpu_thread_fn + 445 (tcg-cpus-rr.c:217)
8 qemu-system-ppc 0x0000000109e41fae qemu_thread_start + 126 (qemu-thread-posix.c:521)
9 libsystem_pthread.dylib 0x00007fff2038e950 _pthread_start + 224
10 libsystem_pthread.dylib 0x00007fff2038a47b thread_start + 15
Here the crash is in tcg/optimize.c line 212:
mask = si->mask;
"si" is NULL. The NULL value arises from tcg/optimize.c line 198:
si = ts_info(src_ts);
I did not attempt to determine the root cause of this issue, however.
It clearly is related to the "tcg/optimize" changes in this commit.
The previous commit c0dd6654f207810b16a75b673258f5ce2ceffbf0 doesn't
crash.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1912065/+subscriptions
Patchew URL: https://patchew.org/QEMU/161099084144.30067.897245088295398204.malone@chaenomeles.canonical.com/ Hi, This series seems to have some coding style problems. See output below for more information: Type: series Message-id: 161099084144.30067.897245088295398204.malone@chaenomeles.canonical.com Subject: [Bug 1912065] Re: Segfaults in tcg/optimize.c:212 after commit 7c79721606be11b5bc556449e5bcbc331ef6867d === TEST SCRIPT BEGIN === #!/bin/bash git rev-parse base > /dev/null || exit 0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram ./scripts/checkpatch.pl --mailback base.. === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 From https://github.com/patchew-project/qemu * [new tag] patchew/161099084144.30067.897245088295398204.malone@chaenomeles.canonical.com -> patchew/161099084144.30067.897245088295398204.malone@chaenomeles.canonical.com - [tag update] patchew/cover.1610638428.git.jag.raman@oracle.com -> patchew/cover.1610638428.git.jag.raman@oracle.com Switched to a new branch 'test' 0b7840a Segfaults in tcg/optimize.c:212 after commit 7c79721606be11b5bc556449e5bcbc331ef6867d === OUTPUT BEGIN === ERROR: Missing Signed-off-by: line(s) total: 1 errors, 0 warnings, 16 lines checked Commit 0b7840aec0d8 (Segfaults in tcg/optimize.c:212 after commit 7c79721606be11b5bc556449e5bcbc331ef6867d) has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. === OUTPUT END === Test command exited with code: 1 The full log is available at http://patchew.org/logs/161099084144.30067.897245088295398204.malone@chaenomeles.canonical.com/testing.checkpatch/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
On 1/18/21 8:00 AM, no-reply@patchew.org wrote: > Patchew URL: https://patchew.org/QEMU/161099084144.30067.897245088295398204.malone@chaenomeles.canonical.com/ Can we get patchew to not respond to launchpad threads? r~
© 2016 - 2024 Red Hat, Inc.