From: "Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com>
To: Yury Norov <ynorov@caviumnetworks.com>,
arnd@arndb.de, catalin.marinas@arm.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Cc: schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com,
pinskia@gmail.com, Prasun.Kapoor@caviumnetworks.com,
schwab@suse.de, Nathan_Lynch@mentor.com, agraf@suse.de,
klimov.linux@gmail.com, broonie@kernel.org,
joseph@codesourcery.com,
christoph.muellner@theobroma-systems.com,
linux-doc@vger.kernel.org, linux-arch@vger.kernel.org,
linux-s390@vger.kernel.org, Hanjun Guo <guohanjun@huawei.com>,
"Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com>,
gcc@gcc.gnu.org
Subject: Re: [RFC6 PATCH v6 00/21] ILP32 for ARM64 - LTP results
Date: Sat, 23 Apr 2016 11:37:29 +0800 [thread overview]
Message-ID: <571AEDF9.6030701@huawei.com> (raw)
In-Reply-To: <20160405224412.GA18300@yury-N73SV>
[-- Attachment #1: Type: text/plain, Size: 5248 bytes --]
Hi, Yury
On 2016/4/6 6:44, Yury Norov wrote:
> There are about 20 failing tests of 782 in lite scenario.
> float_bessel
> float_exp_log
> float_iperb
> float_power
> float_trigo
> pipeio_1
> pipeio_3
> pipeio_5
> pipeio_8
> abort01
> clone02
> kill11
> mmap16
> open12
> pause01
> rename11
> rmdir02
> umount2_01
> umount2_02
> umount2_03
> utime06
> mtest06
>
> The list is rough because some tests fail not every time.
>
> Tests abort01 and kill11 fail for lp64 too, so maybe there's
> a reason unrelated to ilp32 itself.
>
> float_xxx tests fail because they call unwind() from signal context,
> and GCC for ilp32 has problem with it, as Andrew told.
Is there some progress about this issue. When we talk about unwind
functions, do you mean the function in libgcc?
We encountered another issue(abort not segfault) which also called
pthread_cancel(). The test code is in the attachment. Here is the
backtrace:
```
Program received signal SIGABRT, Aborted.
[Switching to Thread 0xf77ee330 (LWP 2958)]
0x000000000040f5bc in raise (sig=sig@entry=6)
at ../sysdeps/unix/sysv/linux/raise.c:55
55 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x000000000040f5bc in raise (sig=sig@entry=6)
at ../sysdeps/unix/sysv/linux/raise.c:55
#1 0x000000000040f884 in abort () at abort.c:89
#2 0x00000000004073b4 in uw_update_context_1 (
context=context@entry=0xf77ec820, fs=fs@entry=0xf77ebec8)
at /home/GCC-Build/p660/p660_build_dir/src/gcc-4.9/libgcc/unwind-dw2.c:1430
#3 0x00000000004078c0 in uw_update_context (context=context@entry=0xf77ec820,
fs=fs@entry=0xf77ebec8)
at /home/GCC-Build/p660/p660_build_dir/src/gcc-4.9/libgcc/unwind-dw2.c:1506
#4 0x0000000000407a9c in uw_advance_context (fs=0xf77ebec8,
context=0xf77ec820)
at /home/GCC-Build/p660/p660_build_dir/src/gcc-4.9/libgcc/unwind-dw2.c:1529
#5 _Unwind_ForcedUnwind_Phase2 (exc=exc@entry=0xf77ee580,
context=context@entry=0xf77ec820)
at /home/GCC-Build/p660/p660_build_dir/src/gcc-4.9/libgcc/unwind.inc:185
#6 0x0000000000408228 in _Unwind_ForcedUnwind (exc=0xf77ee580,
stop=stop@entry=0x405440 <unwind_stop>, stop_argument=0xf77eddd8)
at /home/GCC-Build/p660/p660_build_dir/src/gcc-4.9/libgcc/unwind.inc:207
#7 0x00000000004055c4 in __pthread_unwind (buf=<optimized out>)
at unwind.c:126
#8 0x00000000004050b4 in __do_cancel () at ./pthreadP.h:283
#9 sigcancel_handler (sig=<optimized out>, si=<optimized out>,
ctx=<optimized out>) at nptl-init.c:225
---Type <return> to continue, or q <return> to quit---
#10 <signal handler called>
#11 0x0000000000000000 in ?? ()
#12 0x0000000000423084 in __select (nfds=-66661, readfds=<optimized out>,
writefds=<optimized out>, exceptfds=<optimized out>, timeout=0x0)
at ../sysdeps/unix/sysv/linux/generic/select.c:45
#13 0x0000000000400604 in TEST_TaskDelay (
uiMillSecs=<error reading variable: can't compute CFA for this frame>)
at test-cancel.c:18
#14 0x0000000000400680 in printids (
s=<error reading variable: can't compute CFA for this frame>)
at test-cancel.c:38
#15 0x00000000004006d0 in thr_fn (
arg=<error reading variable: can't compute CFA for this frame>)
at test-cancel.c:49
#16 0x0000000000401b28 in start_thread (arg=0x4a3000) at pthread_create.c:335
#17 0x0000000000401b28 in start_thread (arg=0x4a3000) at pthread_create.c:335
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
```
Such abort is raise by the following code:
```
static void
uw_update_context_1 (struct _Unwind_Context *context, _Unwind_FrameState *fs)
{
//...
/* Compute this frame's CFA. */
switch (fs->regs.cfa_how)
{
case CFA_REG_OFFSET:
cfa = _Unwind_GetPtr (&orig_context, fs->regs.cfa_reg);
cfa += fs->regs.cfa_offset;
break;
case CFA_EXP:
{
const unsigned char *exp = fs->regs.cfa_exp;
_uleb128_t len;
exp = read_uleb128 (exp, &len);
cfa = (void *) (_Unwind_Ptr)
execute_stack_op (exp, exp + len, &orig_context, 0);
break;
}
default:
gcc_unreachable ();
}
context->cfa = cfa;
//...
}
``
Any suggestion is appreciated.
CC gcc mailing list. Sorry if it is off topic.
Regards
Bamvor
> pipeio_x tests are very unstable and may fail randomly. I strongly
> suspect race conditions, as they all work like a charm if pinned to
> single CPU with taskset. Probably, race is the reason of clone02 too.
> Though I'm not sure, is the race in kernel, glibc or test itself.
>
> But I know for sure that pause01 fails due to test design:
> if (setitimer(ITIMER_REAL, &it, NULL)) // For 1000us
> tst_brkm(TBROK | TERRNO, NULL, "setitimer() failed");
>
> TEST(pause());
>
> As setitimer() and pause() calls are not atomic, alarm may come before pause()
> is called, and be silently dropped by the handler. Next pause() call hangs
> test forever. I already reported to LTP list.
>
> open12, rename11, rmdir02, mmap16, mtest06 - all call mkfs tool, and it returns
> error code. I didn't investigate it much yet.
>
> umount02_x, utime06 - cannot reproduce out of scenario, even run it in infinite
> loop - they work fine.
>
> Full test log is attached.
>
> Yury
>
[-- Attachment #2: test-cancel.c --]
[-- Type: text/plain, Size: 1299 bytes --]
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <string.h>
#include <sys/select.h>
int TEST_TaskDelay(int uiMillSecs)
{
int iRet;
struct timeval tv;
tv.tv_usec = (uiMillSecs % 1000) * 1000;
tv.tv_sec = uiMillSecs / 1000;
do{
iRet = select(1, NULL, NULL, NULL, &tv );
}while((-1 == iRet) && (EINTR == errno));
return 0;
}
void printids(const char *s)
{
unsigned int uiIndex;
pid_t pid;
pthread_t tid;
pid = getpid();
tid = pthread_self();
printf("%s pid %u tid %u (0x%x)\n", s, (unsigned int) pid, (unsigned int) tid, (unsigned int) tid);
for(uiIndex = 0; uiIndex < 9000; uiIndex++)
{
TEST_TaskDelay(100);
printf("\n jijun TEST_TaskDelay uiIndex=%d return \n ",uiIndex);
}
return 0;
}
void *thr_fn(void *arg)
{
printids("new thread: ");
return NULL;
}
int main(void)
{
int err;
pthread_t ntid;
//pthread_t ntid1;
err = pthread_create(&ntid,NULL,thr_fn,NULL);
if (err != 0)
printf("can't create thread: %s\n", strerror(err));
#if 0
err = pthread_create(&ntid1,NULL,thr_fn,NULL);
if (err != 0)
printf("can't create thread: %s\n", strerror(err));
#endif
sleep(2);
pthread_cancel(ntid);
//pthread_cancel(ntid1);
sleep(2);
return 0;
}
next prev parent reply other threads:[~2016-04-23 3:37 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-05 22:08 [RFC6 PATCH v6 00/21] ILP32 for ARM64 Yury Norov
[not found] ` <20160405220823.gWgolSTrvCaYgN7S5SPFXiF3LhtSnTMqk0bRkJkGlAE@z>
2016-04-05 22:08 ` [PATCH 01/25] all: syscall wrappers: add documentation Yury Norov
[not found] ` <20160405220824.jY7cNLYAiorOgpa2ln8OTyqzpUaKaWL3T-88gkiapQc@z>
2016-04-05 22:08 ` [PATCH 02/25] all: introduce COMPAT_WRAPPER option and enable it for s390 Yury Norov
[not found] ` <20160405220825.hjSAGpxe-IhD0toZ0kVTCvCTzAiosdjZtGEWmT89DGI@z>
2016-04-05 22:08 ` [PATCH 03/25] all: s390: move wrapper infrastructure to generic headers Yury Norov
[not found] ` <20160405220826.WYr7Nlhc7nKdj0YgH8T4GE6z_r8UD6orpWhvizeoKoU@z>
2016-04-05 22:08 ` [PATCH 04/25] all: s390: move compat_wrappers.c from arch/s390/kernel to kernel/ Yury Norov
[not found] ` <20160405220827.l9fzDQkmt6H3DxFUUd3eTRswywnztZQUErm47GzRlZc@z>
2016-04-05 22:08 ` [PATCH 05/25] all: wrap needed syscalls in generic unistd Yury Norov
[not found] ` <20160405220828._hqEOT6dkIXkieFRqxfWeosX-Js_gLE8SZeXG304-LE@z>
2016-04-05 22:08 ` [PATCH 06/25] compat ABI: use non-compat openat and open_by_handle_at variants Yury Norov
[not found] ` <20160405220829.Q0Wpxc1wVWIFskD86LkpZ11ixznVKaDLZK8uPMyfw6o@z>
2016-04-05 22:08 ` [PATCH 07/25] 32-bit ABI: introduce ARCH_32BIT_OFF_T config option Yury Norov
2016-04-05 22:08 ` [PATCH 08/25] arm64: ilp32: add documentation on the ILP32 ABI for ARM64 Yury Norov
2016-04-05 22:08 ` [PATCH 09/25] arm64: ensure the kernel is compiled for LP64 Yury Norov
2016-04-05 22:08 ` [PATCH 10/25] arm64: rename COMPAT to AARCH32_EL0 in Kconfig Yury Norov
2016-04-14 3:20 ` Zhangjian (Bamvor)
2016-04-22 15:28 ` Catalin Marinas
2016-04-05 22:08 ` [PATCH 11/25] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov
2016-04-05 22:08 ` [PATCH 12/25] arm64: compat: change config dependences to aarch32 Yury Norov
2016-04-22 15:58 ` Catalin Marinas
2016-04-22 21:59 ` Yury Norov
2016-04-23 2:33 ` Zhangjian (Bamvor)
2016-04-05 22:08 ` [PATCH 13/25] arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64 Yury Norov
2016-04-05 22:08 ` [PATCH 14/25] thread: move thread bits accessors to separated file Yury Norov
2016-04-05 22:08 ` [PATCH 15/25] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) Yury Norov
2016-05-06 12:02 ` Zhangjian (Bamvor)
2016-04-05 22:08 ` [PATCH 16/25] arm64: ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64 Yury Norov
2016-04-05 22:08 ` [PATCH 17/25] arm64: introduce binfmt_elf32.c Yury Norov
2016-04-05 22:08 ` [PATCH 18/25] arm64: ilp32: introduce binfmt_ilp32.c Yury Norov
2016-04-22 16:51 ` Catalin Marinas
2016-04-22 17:41 ` Arnd Bergmann
2016-04-05 22:08 ` [PATCH 19/25] arm64: ptrace: handle ptrace_request differently for aarch32 and ilp32 Yury Norov
2016-04-22 17:10 ` Catalin Marinas
2016-04-22 21:40 ` Yury Norov
2016-04-25 16:57 ` Catalin Marinas
2016-04-05 22:08 ` [PATCH 20/25] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Yury Norov
2016-04-25 17:26 ` Catalin Marinas
2016-04-25 18:19 ` Yury Norov
2016-04-25 18:47 ` Yury Norov
2016-04-26 10:08 ` Catalin Marinas
2016-04-26 16:57 ` Catalin Marinas
2016-04-28 19:19 ` Yury Norov
2016-04-28 20:43 ` Arnd Bergmann
2016-04-28 22:21 ` Yury Norov
2016-04-28 22:43 ` Arnd Bergmann
2016-04-29 13:13 ` Yury Norov
2016-04-29 15:45 ` Arnd Bergmann
2016-05-06 12:16 ` Zhangjian (Bamvor)
2016-05-06 12:37 ` Yury Norov
2016-05-10 7:42 ` Zhangjian (Bamvor)
2016-05-10 7:55 ` Zhangjian (Bamvor)
2016-05-10 8:36 ` Arnd Bergmann
2016-05-10 9:47 ` Zhangjian (Bamvor)
2016-05-10 11:48 ` Arnd Bergmann
2016-05-10 12:39 ` Zhangjian (Bamvor)
2016-05-10 12:50 ` Arnd Bergmann
2016-05-11 2:04 ` Zhangjian (Bamvor)
2016-05-11 8:04 ` Yury Norov
2016-05-11 10:55 ` Arnd Bergmann
2016-05-11 16:59 ` Catalin Marinas
2016-05-11 19:30 ` Arnd Bergmann
2016-05-12 9:17 ` Catalin Marinas
2016-05-12 9:21 ` Arnd Bergmann
2016-05-12 12:49 ` Zhangjian (Bamvor)
2016-05-12 13:06 ` Arnd Bergmann
2016-05-12 13:19 ` Yury Norov
2016-05-14 12:49 ` Yury Norov
2016-05-11 8:09 ` Arnd Bergmann
2016-05-11 10:12 ` Zhangjian (Bamvor)
2016-05-11 11:16 ` Zhangjian (Bamvor)
2016-05-11 14:50 ` Arnd Bergmann
2016-05-12 3:45 ` Zhangjian (Bamvor)
2016-05-12 8:24 ` Yury Norov
2016-05-12 12:52 ` Zhangjian (Bamvor)
2016-05-12 12:59 ` Yury Norov
2016-05-14 15:03 ` Yury Norov
2016-05-16 17:06 ` Catalin Marinas
2016-05-17 19:05 ` Yury Norov
2016-05-18 11:21 ` Catalin Marinas
2016-05-18 17:58 ` Yury Norov
2016-04-05 22:08 ` [PATCH 21/25] arm64: signal: share lp64 signal routines to ilp32 Yury Norov
2016-04-05 22:08 ` [PATCH 22/25] arm64: signal32: move ilp32 and aarch32 common code to separated file Yury Norov
2016-04-05 22:08 ` [PATCH 23/25] arm64: ilp32: introduce ilp32-specific handlers for sigframe and ucontext Yury Norov
2016-04-05 22:08 ` [PATCH 24/25] arm64:ilp32: add vdso-ilp32 and use for signal return Yury Norov
2016-04-13 9:19 ` Zhangjian (Bamvor)
2016-04-13 15:55 ` Yury Norov
2016-05-03 12:49 ` Zhangjian (Bamvor)
2016-04-29 16:01 ` Catalin Marinas
2016-04-29 17:30 ` Arnd Bergmann
2016-05-03 9:00 ` Catalin Marinas
2016-05-03 9:05 ` Arnd Bergmann
2016-05-03 11:07 ` Zhangjian (Bamvor)
2016-05-03 12:41 ` Zhangjian (Bamvor)
2016-05-04 21:49 ` Yury Norov
2016-05-04 23:23 ` Andrew Pinski
2016-05-05 2:24 ` Zhangjian (Bamvor)
2016-05-05 6:40 ` Andrew Pinski
2016-05-06 14:00 ` Yury Norov
2016-05-09 10:07 ` Zhangjian (Bamvor)
2016-05-05 8:22 ` Yury Norov
2016-04-05 22:08 ` [PATCH 25/25] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov
2016-04-29 16:03 ` Catalin Marinas
2016-04-29 16:08 ` Yury Norov
2016-04-29 16:14 ` Catalin Marinas
2016-04-29 16:26 ` Yury Norov
2016-04-05 22:44 ` [RFC6 PATCH v6 00/21] ILP32 for ARM64 - LTP results Yury Norov
2016-04-23 3:37 ` Zhangjian (Bamvor) [this message]
2016-04-27 7:30 ` Andrew Pinski
2016-04-27 21:15 ` Andrew Pinski
2016-04-28 12:16 ` Zhangjian (Bamvor)
2016-04-06 6:51 ` [RFC6 PATCH v6 00/21] ILP32 for ARM64 Geert Uytterhoeven
2016-04-06 12:29 ` Yury Norov
2016-04-07 12:28 ` Geert Uytterhoeven
2016-05-12 0:20 ` Yury Norov
2016-05-12 9:19 ` Arnd Bergmann
2016-05-12 10:30 ` Yury Norov
2016-05-12 13:35 ` Catalin Marinas
2016-05-12 13:44 ` Yury Norov
2016-05-12 14:07 ` Catalin Marinas
2016-05-12 14:20 ` Catalin Marinas
2016-05-12 14:34 ` Yury Norov
2016-05-12 14:54 ` Catalin Marinas
2016-05-12 15:27 ` Yury Norov
2016-05-12 14:24 ` Yury Norov
2016-05-12 15:28 ` Catalin Marinas
2016-05-13 8:11 ` Zhangjian (Bamvor)
2016-05-13 9:28 ` Catalin Marinas
2016-05-13 10:51 ` Yury Norov
2016-05-13 11:03 ` Catalin Marinas
2016-05-13 13:32 ` Catalin Marinas
2016-05-17 12:10 ` Szabolcs Nagy
2016-05-17 15:37 ` Arnd Bergmann
2016-05-17 15:45 ` Joseph Myers
2016-05-17 16:02 ` Andreas Schwab
2016-05-17 22:45 ` Arnd Bergmann
2016-05-17 15:40 ` Joseph Myers
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=571AEDF9.6030701@huawei.com \
--to=bamvor.zhangjian@huawei.com \
--cc=Nathan_Lynch@mentor.com \
--cc=Prasun.Kapoor@caviumnetworks.com \
--cc=agraf@suse.de \
--cc=arnd@arndb.de \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=christoph.muellner@theobroma-systems.com \
--cc=gcc@gcc.gnu.org \
--cc=guohanjun@huawei.com \
--cc=heiko.carstens@de.ibm.com \
--cc=joseph@codesourcery.com \
--cc=klimov.linux@gmail.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=pinskia@gmail.com \
--cc=schwab@suse.de \
--cc=schwidefsky@de.ibm.com \
--cc=ynorov@caviumnetworks.com \
/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).