On 08/28/2017 09:15 PM, Martin Liška wrote:
> On 08/28/2017 04:06 PM, Jeff Law wrote:
>> On 08/28/2017 01:16 AM, Martin Liška wrote:
>>> Hello.
>>>
>>> I've just repeatedly seen stuck in build process:
>>>
>>> make[5]: Entering directory 
>>> `/home/marxin/Programming/gcc/objdir/powerpc64le-unknown-linux-gnu/libstdc++-v3/po'
>>> msgfmt -o de.mo ../../../../libstdc++-v3/po/de.po
>>>
>>> 49        __asm volatile ("sc; mfcr %0"
>>> Missing separate debuginfos, use: debuginfo-install 
>>> gettext-0.18.2.1-4.el7.ppc64le
>>> (gdb) bt
>>> #0  0x00003fff85d8bac8 in sys_futex0 (val=-1, op=128, addr=0x3fff85db0520 
>>> <acc_device_lock>) at ../../../libgomp/config/linux/powerpc/futex.h:49
>>> #1  futex_wait (val=-1, addr=0x3fff85db0520 <acc_device_lock>) at 
>>> ../../../libgomp/config/linux/powerpc/futex.h:62
>>> #2  do_wait (val=-1, addr=<optimized out>) at 
>>> ../../../libgomp/config/linux/wait.h:67
>>> #3  gomp_mutex_lock_slow (mutex=0x3fff85db0520 <acc_device_lock>, 
>>> oldval=<optimized out>) at ../../../libgomp/config/linux/mutex.c:63
>>> #4  0x00003fff85d98b04 in gomp_mutex_lock (mutex=0x3fff85db0520 
>>> <acc_device_lock>) at ../../../libgomp/config/linux/mutex.h:57
>>> #5  goacc_register (disp=0x3fff85db0090 <host_dispatch>) at 
>>> ../../../libgomp/oacc-init.c:74
>>> #6  0x00003fff85d983fc in goacc_host_init () at 
>>> ../../../libgomp/oacc-host.c:265
>>> #7  0x00003fff85d99c88 in goacc_runtime_initialize () at 
>>> ../../../libgomp/oacc-init.c:657
>>> #8  0x00003fff85d7882c in initialize_env () at ../../../libgomp/env.c:1340
>>> #9  0x00003fff86525c74 in _dl_init_internal () from /lib64/ld64.so.2
>>> #10 0x00003fff865119cc in _dl_start_user () from /lib64/ld64.so.2
>>>
>>> $ msgfmt --version
>>> msgfmt (GNU gettext-tools) 0.18.2
>>>
>>> Is it a known issue, has anybody spotted that as well?
>> Yea, my ppc64le builds from late last week are stumbling on this as
>> well.  Could well be an environment thing -- if I go into
>> <targdir>/libstdc++-v3/po and "make", it works just fine.
> 
> I did the same with the same result. Note that I can see the same problem
> on gcc110 machine :/
> 
> Martin
> 
>>
>> jeff
>>
> 

Hi.

So I've just tried to build latest 0.19.8 and it behaves the same. There's 
strace:

[pid 21880] set_tid_address(0x3fff80718f30) = 21880
[pid 21880] set_robust_list(0x3fff80718f40, 24) = 0
[pid 21880] rt_sigaction(SIGRTMIN, {0x3fff7fef6670, [], SA_SIGINFO}, NULL, 8) = 0
[pid 21880] rt_sigaction(SIGRT_1, {0x3fff7fef6770, [], SA_RESTART|SA_SIGINFO}, 
NULL, 8) = 0
[pid 21880] rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
[pid 21880] getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, 
rlim_max=RLIM64_INFINITY}) = 0
[pid 21880] openat(AT_FDCWD, "/sys/devices/system/cpu", 
O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
[pid 21880] brk(0)                      = 0x1001ad60000
[pid 21880] brk(0x1001ad90000)          = 0x1001ad90000
[pid 21880] getdents(3, /* 177 entries */, 32768) = 5576
[pid 21880] getdents(3, /* 0 entries */, 32768) = 0
[pid 21880] close(3)                    = 0
[pid 21880] sched_getaffinity(21880, 24, {ffffffffffffffff, ffffffffffffffff, 
ffffffff}) = 24
[pid 21880] futex(0x3fff7ff70520, FUTEX_WAIT_PRIVATE, -1, NULLProcess 20859 
detached

Compared to situation when one directly invokes the command:

sched_getaffinity(23878, 24, {ffffffffffffffff, ffffffffffffffff, ffffffff}) = 
24
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=109675168, ...}) = 0
mmap(NULL, 109675168, PROT_READ, MAP_PRIVATE, 3, 0) = 0x3fff9a7b0000
close(3)                                = 0
open("../../../../libstdc++-v3/po/de.po", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0664, st_size=749, ...}) = 0
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x3fffa1c00000
read(3, "# Translations needed for GNU C++ library locale implementation.\n# 
Copyright (C) 2001-2017 Free Software Foundation, Inc.\n# Benjamin Kosnik 
<b...@redhat.com>, 2001.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr 
\"\"\n\"Project-Id-Version: libstdc++ 3.1.0\\n\"\n\"POT-Creation-Date: 
2001-07-31 08:49-0700\\n\"\n\"PO-Revision-Date: YEAR-MO-DA 
HO:MI+ZONE\\n\"\n\"Last-Translator: FULL NAME 
<EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE 
<l...@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; 
charset=ISO-8859-1\\n\"\n\"Content-Transfer-Encoding: 8-"..., 65536) = 749
open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=26254, ...}) = 0
mmap(NULL, 26254, PROT_READ, MAP_SHARED, 4, 0) = 0x3fff9a7a0000
close(4)                                = 0
futex(0x3fffa16b25a0, FUTEX_WAKE_PRIVATE, 2147483647) = 0

Looks it uses different invocation of futex syscall. In order to have it 
working I needed to configure gettext w/ --disable-openmp.
Note that the former invocation of msgfmt contains just a single futex syscall, 
so should not be blocked by anything else.

Martin

Reply via email to