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