[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Latest buildbot failures (are random?)
On Tue, 2019-04-16 at 22:58 +0200, Mark Wielaard wrote:
> Hi,
>
> So the latest patches all seemed to cause some builder to fail some
> testcase. But not always on the same architecture and not always the
> same testcase. For the last 12 commits only centos-aarch64 was
> completely green.
>
> https://builder.wildebeest.org/buildbot/#/builders?tags=libabigail
> https://builder.wildebeest.org/buildbot/#/console
>
> I suspect the "Fold away const for array types" patch. All failures
> look like somehow a const <type> is moved around, messing up the
> type-
> ids numbering. Might the re_canonicalization somehow introduce non-
> deterministic ordering of the types?
Maybe that is wrong. If you look at the last failure:
https://builder.wildebeest.org/buildbot/#/builders/7/builds/246
There doesn't seem to be a const array type involved.
The test-suite.log shows:
FAIL: runtestreaddwarf
======================
--- /srv/buildbot/worker/libabigail-fedora-x86_64/build/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi 2019-04-16 17:46:57.279685814 +0200
+++ /srv/buildbot/worker/libabigail-fedora-x86_64/build/tests/output/test-read-dwarf/test9-pr18818-clang.so.abi 2019-04-17 08:04:25.541144939 +0200
@@ -1611,7 +1611,7 @@
<return type-id='type-id-5'/>
</function-decl>
<qualified-type-def type-id='type-id-114' restrict='yes' id='type-id-115'/>
- <typedef-decl name='_G_fpos_t' type-id='type-id-62' filepath='/usr/include/_G_config.h' line='25' column='1' id='type-id-116'/>
+ <typedef-decl name='_G_fpos_t' type-id='type-id-88' filepath='/usr/include/_G_config.h' line='25' column='1' id='type-id-116'/>
<typedef-decl name='fpos_t' type-id='type-id-116' filepath='/usr/include/stdio.h' line='110' column='1' id='type-id-117'/>
<pointer-type-def type-id='type-id-117' size-in-bits='64' id='type-id-118'/>
<qualified-type-def type-id='type-id-118' restrict='yes' id='type-id-119'/>
FAIL runtestreaddwarf (exit status: 1)
So the difference is the type-id for _G_fpos_t. 62 vs 88.
Where 62 is:
<class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-61' visibility='default' is-declaration-only='yes' id='type-id-62'/>
<typedef-decl name='div_t' type-id='type-id-62' filepath='/usr/include/stdlib.h' line='101' column='1' id='type-id-61'/>
And 88 is"
<class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-87' visibility='default' filepath='/usr/include/wchar.h' line='82' column='1' id='type-id-88'>
[...]
<typedef-decl name='__mbstate_t' type-id='type-id-88' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-87'/>
Where we seem to describe the following:
typedef struct
{
__off_t __pos;
__mbstate_t __state;
} _G_fpos_t;
I don't think I understand what is going on, or how anonymous structs are represented. But it doesn't seem to have anything to do with const arrays?
Cheers,
Mark