From: "Philippe Mathieu-Daudé" <philippe.mathieu.daude@gmail.com>
To: Emanuele Giuseppe Esposito <eesposit@redhat.com>,
Kevin Wolf <kwolf@redhat.com>,
qemu-block@nongnu.org
Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PULL 21/50] block/block-backend.c: assertions for block-backend
Date: Wed, 16 Mar 2022 16:25:39 +0100 [thread overview]
Message-ID: <b8bc1a54-1eb8-b3b5-c40f-d1cbaa9e69d8@gmail.com> (raw)
In-Reply-To: <d600ff25-d854-7239-9001-7315b24b9054@redhat.com>
On 16/3/22 15:46, Emanuele Giuseppe Esposito wrote:
> Am 16/03/2022 um 13:53 schrieb Philippe Mathieu-Daudé:
>> On 16/3/22 13:44, Philippe Mathieu-Daudé wrote:
>>> Hi,
>>>
>>> On 4/3/22 17:46, Kevin Wolf wrote:
>>>> From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
>>>>
>>>> All the global state (GS) API functions will check that
>>>> qemu_in_main_thread() returns true. If not, it means
>>>> that the safety of BQL cannot be guaranteed, and
>>>> they need to be moved to I/O.
>>>
>>> I'm getting this crash:
>>>
>>> $ qemu-system-i386
>>> Assertion failed: (qemu_in_main_thread()), function blk_all_next, file
>>> block-backend.c, line 552.
>>> Abort trap: 6
>>>
>>> Assertion failed: (qemu_in_main_thread()), function blk_all_next, file
>>> block-backend.c, line 552.
>>> qemu-system-i386 was compiled with optimization - stepping may behave
>>> oddly; variables may not be available.
>>> Process 76914 stopped
>>> * thread #1, queue = 'com.apple.main-thread', stop reason = hit
>>> program assert
>>> frame #4: 0x000000010057c2d4 qemu-system-i386`blk_all_next.cold.1
>>> at block-backend.c:552:5 [opt]
>>> 549 */
>>> 550 BlockBackend *blk_all_next(BlockBackend *blk)
>>> 551 {
>>> -> 552 GLOBAL_STATE_CODE();
>>> 553 return blk ? QTAILQ_NEXT(blk, link)
>>> 554 : QTAILQ_FIRST(&block_backends);
>>> 555 }
>>> Target 1: (qemu-system-i386) stopped.
>>
>> Forgot to paste the backtrace:
>>
>> (lldb) bt
>> * thread #1, queue = 'com.apple.main-thread', stop reason = hit program
>> assert
>> frame #0: 0x00000001908c99b8 libsystem_kernel.dylib`__pthread_kill + 8
>> frame #1: 0x00000001908fceb0 libsystem_pthread.dylib`pthread_kill + 288
>> frame #2: 0x000000019083a314 libsystem_c.dylib`abort + 164
>> frame #3: 0x000000019083972c libsystem_c.dylib`__assert_rtn + 300
>> * frame #4: 0x000000010057c2d4 qemu-system-i386`blk_all_next.cold.1 at
>> block-backend.c:552:5 [opt]
>> frame #5: 0x00000001003c00b4
>> qemu-system-i386`blk_all_next(blk=<unavailable>) at
>> block-backend.c:552:5 [opt]
>> frame #6: 0x00000001003d8f04
>> qemu-system-i386`qmp_query_block(errp=0x0000000000000000) at
>> qapi.c:591:16 [opt]
>> frame #7: 0x000000010003ab0c qemu-system-i386`main [inlined]
>> addRemovableDevicesMenuItems at cocoa.m:1756:21 [opt]
>> frame #8: 0x000000010003ab04
>> qemu-system-i386`main(argc=<unavailable>, argv=<unavailable>) at
>> cocoa.m:1980:5 [opt]
>> frame #9: 0x00000001012690f4 dyld`start + 520
>
> I think Paolo and Peter talked about this a couple of days ago on #qemu,
> and have already found a solution if I remember correctly.
>
> Maybe it's worth to check with them first.
Maybe this discussion?
https://lore.kernel.org/qemu-devel/20220307151004.578069-1-pbonzini@redhat.com/
>
> Emanuele
>>
>>> Bisected to this patch:
>>>
>>> 0439c5a4623d674efa0c72abd62ca6e98bb7cf87 is the first bad commit
>>>
>>>> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
>>>> Message-Id: <20220303151616.325444-9-eesposit@redhat.com>
>>>> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
>>>> ---
>>>> block/block-backend.c | 78 ++++++++++++++++++++++++++++++++++++++++++
>>>> softmmu/qdev-monitor.c | 2 ++
>>>> 2 files changed, 80 insertions(+)
>>
>
next prev parent reply other threads:[~2022-03-16 15:28 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-04 16:46 [PULL 00/50] Block layer patches Kevin Wolf
2022-03-04 16:46 ` [PULL 01/50] crypto: perform permission checks under BQL Kevin Wolf
2022-03-04 16:46 ` [PULL 02/50] crypto: distinguish between main loop and I/O in block_crypto_amend_options_generic_luks Kevin Wolf
2022-03-04 16:46 ` [PULL 03/50] block: introduce bdrv_activate Kevin Wolf
2022-03-04 16:46 ` [PULL 04/50] block: rename bdrv_invalidate_cache_all, blk_invalidate_cache and test_sync_op_invalidate_cache Kevin Wolf
2022-03-04 16:46 ` [PULL 05/50] block: move BQL logic of bdrv_co_invalidate_cache in bdrv_activate Kevin Wolf
2022-03-04 16:46 ` [PULL 06/50] tls: add macros for coroutine-safe TLS variables Kevin Wolf
2022-03-04 16:46 ` [PULL 07/50] util/async: replace __thread with QEMU TLS macros Kevin Wolf
2022-03-04 16:46 ` [PULL 08/50] rcu: use coroutine " Kevin Wolf
2022-03-04 16:46 ` [PULL 09/50] cpus: use coroutine TLS macros for iothread_locked Kevin Wolf
2022-03-04 16:46 ` [PULL 10/50] os-posix: Add os_set_daemonize() Kevin Wolf
2022-03-04 16:46 ` [PULL 11/50] qsd: Add pre-init argument parsing pass Kevin Wolf
2022-03-04 16:46 ` [PULL 12/50] qsd: Add --daemonize Kevin Wolf
2022-03-04 16:46 ` [PULL 13/50] iotests/185: Add post-READY quit tests Kevin Wolf
2022-03-04 16:46 ` [PULL 14/50] main-loop.h: introduce qemu_in_main_thread() Kevin Wolf
2022-03-04 16:46 ` [PULL 15/50] main loop: macros to mark GS and I/O functions Kevin Wolf
2022-03-04 16:46 ` [PULL 16/50] include/block/block: split header into I/O and global state API Kevin Wolf
2022-03-04 16:46 ` [PULL 17/50] assertions for block " Kevin Wolf
2022-03-04 16:46 ` [PULL 18/50] IO_CODE and IO_OR_GS_CODE for block I/O API Kevin Wolf
2022-03-04 16:46 ` [PULL 19/50] block/export/fuse.c: allow writable exports to take RESIZE permission Kevin Wolf
2022-03-04 16:46 ` [PULL 20/50] include/sysemu/block-backend: split header into I/O and global state (GS) API Kevin Wolf
2022-03-04 16:46 ` [PULL 21/50] block/block-backend.c: assertions for block-backend Kevin Wolf
2022-03-16 12:44 ` Philippe Mathieu-Daudé
2022-03-16 12:53 ` Philippe Mathieu-Daudé
2022-03-16 14:46 ` Emanuele Giuseppe Esposito
2022-03-16 15:25 ` Philippe Mathieu-Daudé [this message]
2022-03-16 16:02 ` Kevin Wolf
2022-03-16 12:54 ` Emanuele Giuseppe Esposito
2022-03-04 16:46 ` [PULL 22/50] IO_CODE and IO_OR_GS_CODE for block-backend I/O API Kevin Wolf
2022-03-04 16:46 ` [PULL 23/50] block.c: assertions to the block layer permissions API Kevin Wolf
2022-03-04 16:46 ` [PULL 24/50] include/block/block_int: split header into I/O and global state API Kevin Wolf
2022-03-04 16:46 ` [PULL 25/50] assertions for block_int " Kevin Wolf
2022-03-04 16:46 ` [PULL 26/50] IO_CODE and IO_OR_GS_CODE for block_int I/O API Kevin Wolf
2022-03-04 16:46 ` [PULL 27/50] block: introduce assert_bdrv_graph_writable Kevin Wolf
2022-03-04 16:46 ` [PULL 28/50] include/block/blockjob_int.h: split header into I/O and GS API Kevin Wolf
2022-03-04 16:46 ` [PULL 29/50] GS and IO CODE macros for blockjob_int.h Kevin Wolf
2022-03-04 16:46 ` [PULL 30/50] block.c: add assertions to static functions Kevin Wolf
2022-03-04 16:46 ` [PULL 31/50] include/block/blockjob.h: global state API Kevin Wolf
2022-03-04 16:46 ` [PULL 32/50] assertions for blockjob.h " Kevin Wolf
2022-03-04 16:46 ` [PULL 33/50] include/sysemu/blockdev.h: " Kevin Wolf
2022-03-04 16:46 ` [PULL 34/50] assertions for blockdev.h " Kevin Wolf
2022-03-04 16:46 ` [PULL 35/50] include/block/snapshot: global state API + assertions Kevin Wolf
2022-03-04 16:46 ` [PULL 36/50] block/copy-before-write.h: " Kevin Wolf
2022-03-04 16:46 ` [PULL 37/50] block/coroutines: I/O and "I/O or GS" API Kevin Wolf
2022-03-04 16:46 ` [PULL 38/50] block_int-common.h: split function pointers in BlockDriver Kevin Wolf
2022-03-04 16:47 ` [PULL 39/50] block_int-common.h: assertions in the callers of BlockDriver function pointers Kevin Wolf
2022-03-04 16:47 ` [PULL 40/50] block_int-common.h: split function pointers in BdrvChildClass Kevin Wolf
2022-03-04 16:47 ` [PULL 41/50] block_int-common.h: assertions in the callers of BdrvChildClass function pointers Kevin Wolf
2022-03-04 16:47 ` [PULL 42/50] block-backend-common.h: split function pointers in BlockDevOps Kevin Wolf
2022-03-04 16:47 ` [PULL 43/50] job.h: split function pointers in JobDriver Kevin Wolf
2022-03-04 16:47 ` [PULL 44/50] job.h: assertions in the callers of JobDriver function pointers Kevin Wolf
2022-03-04 16:47 ` [PULL 45/50] block: Make bdrv_refresh_limits() non-recursive Kevin Wolf
2022-03-04 16:47 ` [PULL 46/50] iotests: Allow using QMP with the QSD Kevin Wolf
2022-03-04 16:47 ` [PULL 47/50] iotests/graph-changes-while-io: New test Kevin Wolf
2022-03-04 16:47 ` [PULL 48/50] tests/qemu-iotests: Rework the checks and spots using GNU sed Kevin Wolf
2022-03-04 16:47 ` [PULL 49/50] block/amend: Always call .bdrv_amend_clean() Kevin Wolf
2022-03-04 16:47 ` [PULL 50/50] block/amend: Keep strong reference to BDS Kevin Wolf
2022-03-05 14:43 ` [PULL 00/50] Block layer patches Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b8bc1a54-1eb8-b3b5-c40f-d1cbaa9e69d8@gmail.com \
--to=philippe.mathieu.daude@gmail.com \
--cc=eesposit@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).