qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Claudio Fontana <cfontana@suse.de>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>
Subject: Re: check-tcg HOWTO?
Date: Mon, 11 Jan 2021 15:47:04 +0100	[thread overview]
Message-ID: <7df502c2-a792-3fff-7ec7-0a99270274b9@suse.de> (raw)
In-Reply-To: <8735z7pnzv.fsf@linaro.org>

Ciao Alex,

thanks for your answer,

On 1/11/21 2:35 PM, Alex Bennée wrote:
> 
> Claudio Fontana <cfontana@suse.de> writes:
> 
>> Hi Alex,
>>
>> happy new year,
>>
>> I am trying to get check-tcg to run reliably,
>> as I am doing some substantial refactoring of tcg cpu operations, so I need to verify that TCG is fine.
>>
>> This is an overall getting started question, is there a how-to on how
>> to use check-tcg and how to fix things when things don't go smoothly?
> 
> Not really but I could certainly add something. Generally I just run the
> tests manually in gdb when I'm trying to debug stuff.

Right, I plan to do the same, if I get to the command line to run.
I think it does make sense to add something similar to what was explained here in documentation, with a pointer maybe from README?


> 
>> I get different results on different machines for check-tcg, although the runs are containerized,
>> on one machine the tests for aarch64 tcg are SKIPPED completely (so no
>> errors),
> 
> The compiles *may* be containerized - the runs are always in your host
> environment. It's one of the reasons the binaries are built as static
> images so you don't need to mess about with dynamic linking and
> libraries.
> 

Ah good to know, thanks. So everything is actually run in the host environment in the end.

> The only reason some tests get skipped is if you have a locally
> installed cross compiler which doesn't support some architecture
> features (e.g. CROSS_CC_HAS_SVE).


hmm I will have to check then how to make sure that the test does not see these cross compilers...?


> 
>> on the other machine I get:
>>
>> qemu-system-aarch64: terminating on signal 15 from pid 18583 (timeout)
>> qemu-system-aarch64: terminating on signal 15 from pid 18584 (timeout)
>> qemu-system-aarch64: terminating on signal 15 from pid 18585 (timeout)
>> make[2]: *** [../Makefile.target:162: run-hello] Error 124
>> make[2]: *** Waiting for unfinished jobs....
>> make[2]: *** [../Makefile.target:162: run-pauth-3] Error 124
>> make[2]: *** [../Makefile.target:162: run-memory] Error 124
> 
> Given it's timing out on hello I guess it's the shutdown deadlocking.
> Running with V=1 will give you the command line but the semihosting
> config is setup for redirect. So I usually build my own command line. e.g.:
> 
>   ./qemu-system-aarch64 -monitor none -display none \
>     -chardev stdio,id=output  \
>     -M virt -cpu max -display none \
>     -semihosting-config enable=on,target=native,chardev=output \
>     -kernel tests/tcg/aarch64-softmmu/hello
> 


Would it be possible for check-tcg (and possibly even make check in general where applicable)
to automatically spew the command line to reproduce the error, similar to what you have shown here?


I think this is would be of great value for anyone to be able to act on the errors reported.


> There is nothing particularly special apart from making sure semihosting
> is wired up for the output. Apart from some special cases like
> test-mmap-XXXX most tests don't take any arguments.
> 
>>
>> Both are configured with 
>>
>> configure --enable-tcg
>>
>> Anything more than V=1 to get more output?
> 
> The output is normally dumped in $TESTNAME.out in the appropriate
> $BUILDDIR/tests/tcg/$TARGET/ directory.
> 
>> How do I debug and get logs and cores out of containers?
> 
> As I mentioned above the tests are not run in containers, just the
> compiles (if local compilers are missing).

Thanks for clearing this up!

> 
>>
>> in tests/tcg/ there is:
>>
>> a README (with no hint unfortunately) ,
> 
> Woefully out of date I'm afraid. What docs we have are in docs/devel/testing.rst

maybe a

+ Please see docs/devel/testing.rst for hints on how to run make-tcg and reproduce its results from the cmdline.

> 
>> Makefile.qemu
> 
> Links into the main tests/Makefile.include - invoked for each target
> 
>> Makefile.prereqs
> 
> This ensures docker images are built (if required) for each set of tests.
> 
>> Makefile.target
> 
> This is the main (rather simple) makefile which provides the build and
> run targets. You can run directly if you are in the right build dir, eg:
> 
>   13:58:10 [alex@zen:~/l/q/b/a/t/t/aarch64-softmmu] |✔ + pwd
>   /home/alex/lsrc/qemu.git/builds/arm.all/tests/tcg/aarch64-softmmu
>   13:58:57 [alex@zen:~/l/q/b/a/t/t/aarch64-softmmu] |✔ +
>   make  -f ~/lsrc/qemu.git/tests/tcg/Makefile.target TARGET="aarch64-softmmu" SRC_PATH="/home/alex/lsrc/qemu.git" run
> 
> But TBH this is functionally equivalent to calling:
> 
>   make run-tcg-tests-aarch64-softmmu
> 
> in your main build directory.

Thanks, that's helpful.

> 
>> There are a bunch of variables in these files, which seem to be
>> possible to configure, am I expected to set some of those?
> 
> Not really. Most of the magic variables from:
> 
>   tests/tcg/config-$TARGET.mak
> 
> which is built by tests/tcg/configure.sh during the configure step.
> 
>> I think that it would be beneficial to have either more documentation
>> or more immediately actionable information out of make check failures;
> 
> V=1 should show the command lines run and then you should be able to run
> the tests directly yourself.


Hmm V=1 did not show the command line to me, but maybe I just missed it somehow?
Or it contained some sockets that cannot be manually connected?

> 
>> Any help you could give me to make some progess?
> 
> Hope that helps.

It does, I wonder if this could be fed into docs/ with a pointer to it from README,
and also if this new feature for the tests could be developed, ie, producing a command line useful for reproducing the error,
something that can be run directly without further editing, sanitizing etc...

Thanks a lot,

Claudio




      reply	other threads:[~2021-01-11 14:48 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-02  9:32 check-tcg errors (build-user, build-user-plugins) again Claudio Fontana
2020-12-02 11:16 ` Alex Bennée
2020-12-02 11:25   ` Claudio Fontana
2020-12-02 12:52     ` Alex Bennée
2020-12-02 14:24       ` Claudio Fontana
2020-12-02 14:25     ` Philippe Mathieu-Daudé
2021-01-10 21:17 ` check-tcg HOWTO? Claudio Fontana
2021-01-11 13:35   ` Alex Bennée
2021-01-11 14:47     ` Claudio Fontana [this message]

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=7df502c2-a792-3fff-7ec7-0a99270274b9@suse.de \
    --to=cfontana@suse.de \
    --cc=alex.bennee@linaro.org \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --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).