Preparing for the next release: call for testing

Mike Frysinger vapier at gentoo.org
Mon Dec 14 20:45:40 UTC 2015


On 11 Dec 2015 06:30, Dmitry V. Levin wrote:
> On Thu, Dec 10, 2015 at 09:37:35PM -0500, Mike Frysinger wrote:
> > i haven't had a chance yet to triage these.
> > 
> > testing commit bab4ef4272cd2596c7390b34ea8acc086ee8fdb2 (v4.10-566-gbab4ef4)
> > 
> > native (build+tests):
> > vFAIL:  build;  x86_64  ???         linux-4.1.6         kernel-headers-3.4.0   glibc-2.4   gcc-4.5.4
> > vFAIL:  build;  sparc64  ???  cross  kernel-headers-4.3.0  glibc-2.22  gcc-4.6.4
> > ./mpers.sh: line 21: 18442 Killed                  gawk -v VAR_NAME="$VAR_NAME" -v ARCH_FLAG="${ARCH_FLAG#-}" -f "$MPERS_AWK" "${f_d2}" > "${f_h}"
> 
> Was it an OOM killer in both cases?

the older version of gawk used seems to be unhappy with the script.
when i run the command manually:
$ gawk -v VAR_NAME=mpers_target_var -v ARCH_FLAG=m32 -f ./mpers.awk mpers-m32/kernel_dirent.d2
#include <inttypes.h>
typedef
Killed

running it through strace shows that it keeps increasing the heap until it OOMs:
...
brk(0x9524e000)                         = 0x9524e000
brk(0x9526f000)                         = 0x9526f000
brk(0x95291000)                         = 0x95291000
brk(0x952b2000)                         = 0x952b2000
brk(0x952d4000)                         = 0x952d4000
brk(0x952f5000)                         = 0x952f5000
...

adding some debug statements to the script shows it gets into infinite recursion
with the what_is function:
#include <inttypes.h>
typedef
what_is( 0x79 )
type_idx = {  }
special = { typedef }
what_is(  )
type_idx = {  }
special = {  }
what_is(  )
...repeats blank lookups forever...

this is gawk-4.0.1, so i suspect you should be able to reproduce by installing
that version locally.  i'm attaching the mpers-m32/kernel_dirent.d2 in case it
helps.

> > vFAIL:  test;   armv7l  32-bit/LSB  linux-3.4.0-vapier  kernel-headers-3.18.0  glibc-2.21  gcc-4.9.3
> > Segmentation fault
> > inet-cmsg.test: failed test: ./inet-cmsg failed
> 
> tests/inet-cmsg.c sagfaulted, need more info.

yikes, this looks like a kernel bug :).  i'll try a newer one on that system
(i've got a 3.8 upgrade pending already).
[    0.000000] Unable to handle kernel NULL pointer dereference at virtual address 00000080
[    0.000000] pgd = ec708000
[   80.000000] *pgd=41dcc831, *pte=00000000, *ppte=00000000
[    0.000000] Internal error: Oops: 17 [#9] SMP ARM
...
[    0.000000] PC is at ip_options_echo+0x4c/0x410
[    0.000000] LR is at ip_options_echo+0x28/0x410
...
[    0.000000] [<80383ee8>] (ip_options_echo+0x4c/0x410) from [<80387e38>] (ip_cmsg_recv+0x1c8/0x204)
[    0.000000] [<80387e38>] (ip_cmsg_recv+0x1c8/0x204) from [<803a7e70>] (udp_recvmsg+0x334/0x374)
[    0.000000] [<803a7e70>] (udp_recvmsg+0x334/0x374) from [<803afe7c>] (inet_recvmsg+0x94/0xac)
[    0.000000] [<803afe7c>] (inet_recvmsg+0x94/0xac) from [<8034b160>] (sock_recvmsg+0xb0/0xd0)
[    0.000000] [<8034b160>] (sock_recvmsg+0xb0/0xd0) from [<8034c040>] (__sys_recvmsg+0x110/0x1c8)
[    0.000000] [<8034c040>] (__sys_recvmsg+0x110/0x1c8) from [<8034d1d0>] (sys_recvmsg+0x4c/0x78)
[    0.000000] [<8034d1d0>] (sys_recvmsg+0x4c/0x78) from [<8000e580>] (ret_fast_syscall+0x0/0x30)
[    0.000000] Code: e5d63022 e3c22001 e5969080 e3530000 (e5922080) 
...

> > vFAIL:  test;   x86_64  32-bit/LSB  linux-4.1.6         kernel-headers-4.1.0   glibc-2.21  gcc-4.9.2
> > < times({tms_utime=22, tms_stime=17, tms_cutime=33, tms_cstime=26}) = 18446744071580810102
> > ---
> > > times({tms_utime=22, tms_stime=17, tms_cutime=33, tms_cstime=26}) = 2166225782
> 
> Looks like a sign extension bug in libc.
> Is there any safe way on x32 to call times(2) directly?

time_t/clock_t/unsigned long long are 64bit in x32.

looks like strace doesn't like it when you call clock_gettime:
strace: syscall_228(...) in unsupported 64-bit mode of process PID=2565

which doesn't make sense as they're the same syscall for x86_64 and x32.
-mike
-------------- next part --------------
<1><25>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 1
DW_AT_encoding    : 6	(signed char)
DW_AT_name        : (indirect string, offset: 0x101): signed char
<1><2c>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 2
DW_AT_encoding    : 5	(signed)
DW_AT_name        : (indirect string, offset: 0x10d): short int
<1><33>
Abbrev Number: 9 (DW_TAG_base_type)
DW_AT_byte_size   : 4
DW_AT_encoding    : 5	(signed)
DW_AT_name        : int
<1><3a>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 8
DW_AT_encoding    : 5	(signed)
DW_AT_name        : (indirect string, offset: 0x0): long long int
<1><41>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 1
DW_AT_encoding    : 8	(unsigned char)
DW_AT_name        : (indirect string, offset: 0x27): unsigned char
<1><48>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 2
DW_AT_encoding    : 7	(unsigned)
DW_AT_name        : (indirect string, offset: 0xee): short unsigned int
<1><4f>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 4
DW_AT_encoding    : 7	(unsigned)
DW_AT_name        : (indirect string, offset: 0xe): unsigned int
<1><56>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 8
DW_AT_encoding    : 7	(unsigned)
DW_AT_name        : (indirect string, offset: 0x8a): long long unsigned int
<1><5d>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 4
DW_AT_encoding    : 7	(unsigned)
DW_AT_name        : (indirect string, offset: 0x78): long unsigned int
<1><64>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 4
DW_AT_encoding    : 5	(signed)
DW_AT_name        : (indirect string, offset: 0xc4): long int
<1><6b>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 1
DW_AT_encoding    : 6	(signed char)
DW_AT_name        : (indirect string, offset: 0xbf): char
<1><72>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 1
DW_AT_encoding    : 2	(boolean)
DW_AT_name        : (indirect string, offset: 0xb9): _Bool
<1><79>
Abbrev Number: 10 (DW_TAG_typedef)
DW_AT_name        : (indirect string, offset: 0xe0): kernel_dirent
DW_AT_decl_file   : 1
DW_AT_decl_line   : 29
DW_AT_type        : signature: 4a9aff670ea68538
<1><88>
Abbrev Number: 11 (DW_TAG_variable)
DW_AT_name        : (indirect string, offset: 0x4d): mpers_target_var
DW_AT_decl_file   : 3
DW_AT_decl_line   : 37
DW_AT_type        : <0x79>
DW_AT_external    : 1
DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)

Contents of the .debug_types section:

  Compilation Unit @ offset 0x0:
   Length:        0x95 (32-bit)
   Version:       4
   Abbrev Offset: 0
   Pointer Size:  4
   Signature:     4a9aff670ea68538
   Type Offset:   0x1d
<0><17>
Abbrev Number: 1 (DW_TAG_type_unit)
DW_AT_language    : 1	(ANSI C)
DW_AT_stmt_list   : 0x0
<1><1d>
Abbrev Number: 2 (DW_TAG_structure_type)
DW_AT_byte_size   : 12
DW_AT_decl_file   : 1
DW_AT_decl_line   : 24
DW_AT_sibling     : <0x56>
<2><25>
Abbrev Number: 3 (DW_TAG_member)
DW_AT_name        : (indirect string, offset: 0x117): d_ino
DW_AT_decl_file   : 1
DW_AT_decl_line   : 25
DW_AT_type        : <0x56>
DW_AT_data_member_location: 0
<2><31>
Abbrev Number: 3 (DW_TAG_member)
DW_AT_name        : (indirect string, offset: 0xcd): d_off
DW_AT_decl_file   : 1
DW_AT_decl_line   : 26
DW_AT_type        : <0x56>
DW_AT_data_member_location: 4
<2><3d>
Abbrev Number: 3 (DW_TAG_member)
DW_AT_name        : (indirect string, offset: 0x35): d_reclen
DW_AT_decl_file   : 1
DW_AT_decl_line   : 27
DW_AT_type        : <0x61>
DW_AT_data_member_location: 8
<2><49>
Abbrev Number: 3 (DW_TAG_member)
DW_AT_name        : (indirect string, offset: 0xa1): d_name
DW_AT_decl_file   : 1
DW_AT_decl_line   : 28
DW_AT_type        : <0x68>
DW_AT_data_member_location: 10
<1><56>
Abbrev Number: 4 (DW_TAG_typedef)
DW_AT_name        : (indirect string, offset: 0x3e): kernel_ulong_t
DW_AT_decl_file   : 1
DW_AT_decl_line   : 10
DW_AT_type        : <0x78>
<1><61>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 2
DW_AT_encoding    : 7	(unsigned)
DW_AT_name        : (indirect string, offset: 0xee): short unsigned int
<1><68>
Abbrev Number: 6 (DW_TAG_array_type)
DW_AT_type        : <0x83>
DW_AT_sibling     : <0x78>
<2><71>
Abbrev Number: 7 (DW_TAG_subrange_type)
DW_AT_type        : <0x8a>
DW_AT_upper_bound : 0
<1><78>
Abbrev Number: 4 (DW_TAG_typedef)
DW_AT_name        : (indirect string, offset: 0xa8): __kernel_ulong_t
DW_AT_decl_file   : 2
DW_AT_decl_line   : 15
DW_AT_type        : <0x91>
<1><83>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 1
DW_AT_encoding    : 6	(signed char)
DW_AT_name        : (indirect string, offset: 0xbf): char
<1><8a>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 4
DW_AT_encoding    : 7	(unsigned)
DW_AT_name        : (indirect string, offset: 0xe): unsigned int
<1><91>
Abbrev Number: 5 (DW_TAG_base_type)
DW_AT_byte_size   : 4
DW_AT_encoding    : 7	(unsigned)
DW_AT_name        : (indirect string, offset: 0x78): long unsigned int

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20151214/57726bde/attachment.bin>


More information about the Strace-devel mailing list