Skip to content

Merge v2.090.1-beta.1#3306

Merged
kinke merged 8 commits intoldc-developers:masterfrom
kinke:stable
Feb 6, 2020
Merged

Merge v2.090.1-beta.1#3306
kinke merged 8 commits intoldc-developers:masterfrom
kinke:stable

Conversation

@kinke
Copy link
Member

@kinke kinke commented Feb 1, 2020

No description provided.

Instead of compiling, linking and running the tool each time on-the-fly,
thereby also reducing the memory requirements somewhat (no ldmd2 and ldc2
process ancestors anymore).
@kinke kinke force-pushed the stable branch 5 times, most recently from 0ae3820 to b13b99d Compare February 2, 2020 17:56
static void disableGC() nothrow @nogc
{
__gshared string[] disable_options = [ "gcopt=disable:1" ];
rt_options = disable_options;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this would override other druntime options, right?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only if embedded into LDC. Command line options still have higher precedence.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, and env variables go inbetween priority-wise, the embedded ones here have lowest priority.

kinke added 5 commits February 5, 2020 22:01
Because run.d and tools/paths.d use syntax which is incompatible with
ltsmaster...
As prerequisite for all dmd-testsuite tests. Assume the compiler and
druntime + Phobos have been built already, thereby preventing to know
the exact druntime/Phobos CMake target names *and* not potentially
recompiling an outdated compiler and/or libs when running the tests,
just like with the previous Makefile approach.
If the GC is enabled (-lowmem), it must know about those Array instances,
so that the GC-allocated array of pointers and referenced GC-allocated
strings are kept alive.
This is a cherry-pick from dlang/dmd#10752. Rainer has found out that
the compiler might crash with a segfault when aborting via exit() upon
some compile error, and that this seems to be related to GC worker
threads (so only an issue with recent host compilers), spawned because
of some module ctors bypassing `root/rmem.d` and using the GC directly,
like setting up an associative array in `imphint.d`.

He came up with a nice simple solution to this, making sure the GC
starts in disabled mode whenever it is initialized.
@kinke
Copy link
Member Author

kinke commented Feb 5, 2020

Well, the sporadic but frequent dmd-testsuite issue (run-dmd-testsuite terminated/killed - Received "terminated" signal for CircleCI, no useful output) still persists. IIRC, it's only the Linux shared libs jobs that frequently fail, so it might have to do with shared druntime/Phobos (also shared by the little run-dmd-testsuite tool itself and the spawned runnable test child processes). I might try disabling parallel GC marking or the whole GC for the little tool next.

@kinke kinke merged commit 3f5e526 into ldc-developers:master Feb 6, 2020
@kinke kinke deleted the stable branch February 6, 2020 01:05
@kinke
Copy link
Member Author

kinke commented Feb 8, 2020

I might try disabling parallel GC marking

@rainers: I can reproduce the CircleCI issue locally now, by building the shared libs only on Linux and hacking druntime here to use the specified high number of GC threads - then running dmd-testsuite's run.d with env var DRT_GCOPT=parallel:32, not limited by num CPU threads - 1, 3 in my case. The CI machines probably default to way too many GC threads for their limited CPU resources.

@kinke
Copy link
Member Author

kinke commented Feb 8, 2020

A stack trace, SIGUSR1 apparently being reserved for the GC:

Thread 102 "run-dmd-testsui" received signal SIGUSR1, User defined signal 1.
[Switching to Thread 0x7ffff4e8a700 (LWP 18880)]
0x00007ffff70d723a in __waitpid (pid=4920, stat_loc=0x7ffff4e88e1c, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:30
(gdb) bt
#0  0x00007ffff70d723a in __waitpid (pid=4920, stat_loc=0x7ffff4e88e1c, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:30
#1  0x00007ffff79b1540 in std.process.Pid.performWait(bool) (this=0x7ffff5d89640, block=true) at process.d:1534
#2  0x00007ffff79b1701 in _D3std7process4waitFNfCQvQt3PidZi (pid=0x7ffff5d89640) at process.d:1684
#3  0x00005555555808b4 in _D3run4mainFAAyaZ14__foreachbody4MFKSQBj6TargetZi (__applyArg0=...)
    at /home/martin/ldc/tests/d2/dmd-testsuite/run.d:179
#4  0x00005555555b46d0 in _D3std11parallelism__T15ParallelForeachTSQBn5range__T11SortedRangeTAS3run6TargetSQDb9algorithm7sorting__T12schwartzSortS_DQCb4mainFAAyaZ7sortKeyFKxSQDbQDaZmVQza5_61203c2062VEQGqQDp8mutation12SwapStrategyi2TQFjZ9__lambda2VEQImQGz18SortedRangeOptionsi0ZQHqZQIz7opApplyMFMDFKQHwZiZ4doItMFZv () at /home/martin/ldc/runtime/phobos/std/parallelism.d-mixin-4036:4082
#5  0x00007ffff79aa2fa in _D3std11parallelism__T3runTDFZvZQkFQiZv (fpOrDelegate=...) at parallelism.d:761
#6  0x00007ffff79aa2d5 in _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv4implFPvZv (myTask=0x7fffffffc380 "") at parallelism.d:444
#7  0x00007ffff79a791a in std.parallelism.AbstractTask.job() (this=<error reading variable: Cannot access memory at address 0x1338>)
    at parallelism.d:395
#8  0x00007ffff79a7e27 in _D3std11parallelism8TaskPool5doJobMFPSQBkQBj12AbstractTaskZv (this=0x7ffff5b2cc00, job=0x7fffffffc380)
    at parallelism.d:1133
#9  0x00007ffff79a8240 in std.parallelism.TaskPool.executeWorkLoop() (this=0x7ffff5b2cc00) at parallelism.d:1188
#10 0x00007ffff79a80cd in std.parallelism.TaskPool.startWorkLoop() (this=0x7ffff5b2cc00) at parallelism.d:1167
#11 0x00007ffff73aa154 in core.thread.osthread.Thread.run() (this=0x7ffff6210200) at osthread.d:1569
#12 0x00007ffff73a9921 in thread_entryPoint (arg=0x5555555f8a20 "") at osthread.d:486
#13 0x00007ffff70cc6db in start_thread (arg=0x7ffff4e8a700) at pthread_create.c:463
#14 0x00007ffff6bdd88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

The env variable seems to be ignored, so it's spawning 99 GC threads ;)

(gdb) info threads
  Id   Target Id         Frame
  1    Thread 0x7ffff7fd4540 (LWP 18776) "run-dmd-testsui" 0x00007ffff70d723a in __waitpid (pid=4922, stat_loc=0x7fffffffbfbc, options=0)
    at ../sysdeps/unix/sysv/linux/waitpid.c:30
  2    Thread 0x7ffff7ff4700 (LWP 18780) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  3    Thread 0x7ffff7fee700 (LWP 18781) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  4    Thread 0x7ffff7fe8700 (LWP 18782) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  5    Thread 0x7ffff7fe2700 (LWP 18783) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  6    Thread 0x7ffff7fd2700 (LWP 18784) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  7    Thread 0x7ffff7fcc700 (LWP 18785) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  8    Thread 0x7ffff7fc6700 (LWP 18786) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  9    Thread 0x7ffff7fc0700 (LWP 18787) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  10   Thread 0x7ffff7fba700 (LWP 18788) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  11   Thread 0x7ffff7fb4700 (LWP 18789) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  12   Thread 0x7ffff7fae700 (LWP 18790) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  13   Thread 0x7ffff7fa8700 (LWP 18791) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  14   Thread 0x7ffff7fa2700 (LWP 18792) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  15   Thread 0x7ffff7f9c700 (LWP 18793) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  16   Thread 0x7ffff7f96700 (LWP 18794) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  17   Thread 0x7ffff7f90700 (LWP 18795) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  18   Thread 0x7ffff7f8a700 (LWP 18796) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  19   Thread 0x7ffff7f84700 (LWP 18797) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  20   Thread 0x7ffff7f7e700 (LWP 18798) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  21   Thread 0x7ffff7f78700 (LWP 18799) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  22   Thread 0x7ffff7f72700 (LWP 18800) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  23   Thread 0x7ffff7f6c700 (LWP 18801) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  24   Thread 0x7ffff7f66700 (LWP 18802) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  25   Thread 0x7ffff7f60700 (LWP 18803) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  26   Thread 0x7ffff7f5a700 (LWP 18804) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  27   Thread 0x7ffff7f54700 (LWP 18805) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  28   Thread 0x7ffff7f4e700 (LWP 18806) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  29   Thread 0x7ffff7f48700 (LWP 18807) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  30   Thread 0x7ffff7f42700 (LWP 18808) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  31   Thread 0x7ffff7f3c700 (LWP 18809) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  32   Thread 0x7ffff7f36700 (LWP 18810) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  33   Thread 0x7ffff7f30700 (LWP 18811) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  34   Thread 0x7ffff7f2a700 (LWP 18812) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  35   Thread 0x7ffff7f24700 (LWP 18813) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  36   Thread 0x7ffff7f1e700 (LWP 18814) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  37   Thread 0x7ffff7f18700 (LWP 18815) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  38   Thread 0x7ffff7f12700 (LWP 18816) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  39   Thread 0x7ffff7f0c700 (LWP 18817) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  40   Thread 0x7ffff7f06700 (LWP 18818) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  41   Thread 0x7ffff7f00700 (LWP 18819) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  42   Thread 0x7ffff7efa700 (LWP 18820) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  43   Thread 0x7ffff7ef4700 (LWP 18821) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  44   Thread 0x7ffff7eee700 (LWP 18822) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  45   Thread 0x7ffff7ee8700 (LWP 18823) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  46   Thread 0x7ffff7ee2700 (LWP 18824) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  47   Thread 0x7ffff7edc700 (LWP 18825) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  48   Thread 0x7ffff7ed6700 (LWP 18826) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  49   Thread 0x7ffff7ed0700 (LWP 18827) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  50   Thread 0x7ffff7eca700 (LWP 18828) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  51   Thread 0x7ffff7ec4700 (LWP 18829) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  52   Thread 0x7ffff7ebe700 (LWP 18830) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  53   Thread 0x7ffff7eb8700 (LWP 18831) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  54   Thread 0x7ffff7eb2700 (LWP 18832) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  55   Thread 0x7ffff7eac700 (LWP 18833) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  56   Thread 0x7ffff7ea6700 (LWP 18834) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  57   Thread 0x7ffff7ea0700 (LWP 18835) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  58   Thread 0x7ffff7e9a700 (LWP 18836) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  59   Thread 0x7ffff7e94700 (LWP 18837) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  60   Thread 0x7ffff7e8e700 (LWP 18838) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  61   Thread 0x7ffff7e88700 (LWP 18839) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  62   Thread 0x7ffff7e82700 (LWP 18840) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  63   Thread 0x7ffff7e7c700 (LWP 18841) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  64   Thread 0x7ffff7e76700 (LWP 18842) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  65   Thread 0x7ffff7e70700 (LWP 18843) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  66   Thread 0x7ffff7e6a700 (LWP 18844) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  67   Thread 0x7ffff7e64700 (LWP 18845) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  68   Thread 0x7ffff7e5e700 (LWP 18846) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  69   Thread 0x7ffff7e58700 (LWP 18847) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  70   Thread 0x7ffff7e52700 (LWP 18848) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  71   Thread 0x7ffff7e4c700 (LWP 18849) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  72   Thread 0x7ffff7e46700 (LWP 18850) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  73   Thread 0x7ffff7e40700 (LWP 18851) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  74   Thread 0x7ffff7e3a700 (LWP 18852) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  75   Thread 0x7ffff7e34700 (LWP 18853) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  76   Thread 0x7ffff7e2e700 (LWP 18854) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  77   Thread 0x7ffff7e28700 (LWP 18855) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  78   Thread 0x7ffff7e22700 (LWP 18856) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  79   Thread 0x7ffff7e1c700 (LWP 18857) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  80   Thread 0x7ffff7e16700 (LWP 18858) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  81   Thread 0x7ffff7e10700 (LWP 18859) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  82   Thread 0x7ffff7e0a700 (LWP 18860) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  83   Thread 0x7ffff7e04700 (LWP 18861) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  84   Thread 0x7ffff6311700 (LWP 18862) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  85   Thread 0x7ffff630b700 (LWP 18863) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  86   Thread 0x7ffff6305700 (LWP 18864) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  87   Thread 0x7ffff62ff700 (LWP 18865) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  88   Thread 0x7ffff62f9700 (LWP 18866) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  89   Thread 0x7ffff62f3700 (LWP 18867) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  90   Thread 0x7ffff62ed700 (LWP 18868) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  91   Thread 0x7ffff62e7700 (LWP 18869) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  92   Thread 0x7ffff62e1700 (LWP 18870) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  93   Thread 0x7ffff62db700 (LWP 18871) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  94   Thread 0x7ffff62d5700 (LWP 18872) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  95   Thread 0x7ffff62cf700 (LWP 18873) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  96   Thread 0x7ffff62c9700 (LWP 18874) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  97   Thread 0x7ffff62c3700 (LWP 18875) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  98   Thread 0x7ffff62bd700 (LWP 18876) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  99   Thread 0x7ffff62b7700 (LWP 18877) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  100  Thread 0x7ffff62b1700 (LWP 18878) "run-dmd-testsui" 0x00007ffff70d29f3 in futex_wait_cancelable (private=<optimized out>, 
    expected=0, futex_word=0x5555555d9650) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
  101  Thread 0x7ffff568b700 (LWP 18879) "run-dmd-testsui" 0x00007ffff70d723a in __waitpid (pid=4813, stat_loc=0x7ffff5689e1c, options=0)
    at ../sysdeps/unix/sysv/linux/waitpid.c:30
* 102  Thread 0x7ffff4e8a700 (LWP 18880) "run-dmd-testsui" 0x00007ffff70d723a in __waitpid (pid=4920, stat_loc=0x7ffff4e88e1c, options=0)
    at ../sysdeps/unix/sysv/linux/waitpid.c:30
  103  Thread 0x7fff97fff700 (LWP 18881) "run-dmd-testsui" 0x00007ffff70d56d6 in futex_abstimed_wait_cancelable (private=0, abstime=0x0, 
    expected=0, futex_word=0x7ffff7656260 <_D4core6thread8osthread12suspendCountSQBk3sys5posix9semaphore5sem_t>)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:205

Edit: Ah sry, this may be worthless if the signal is expected; I'll retry with gdb handle SIGUSR{1,2} nostop. - Apparently everything's fine in gdb when ignoring these signals. Maybe a few threads don't get a chance to set up the signal handlers before the first signal?

@kinke
Copy link
Member Author

kinke commented Feb 8, 2020

Well it looks like it's one of the other, non-GC-related worker threads from the default std.parallelism task pool receiving SIGUSR1, which process the tests in parallel (and have been running for something like a minute)...

@kinke
Copy link
Member Author

kinke commented Feb 8, 2020

Maybe std.process needs to account for being interrupted by GC signals while waiting for a child process via waitpid()?

@rainers
Copy link
Contributor

rainers commented Feb 9, 2020

The env variable seems to be ignored, so it's spawning 99 GC threads ;)

Environment variable processing has to be enabled via rt_envvars_enabled.

Maybe std.process needs to account for being interrupted by GC signals while waiting for a child process via waitpid()?

Might be, but I'm no expert on linux. Where does the message Received "terminated" signal come from? Is it run that is terminated, or a child process?

Maybe related: dlang/druntime#2813

@kinke
Copy link
Member Author

kinke commented Feb 9, 2020

Where does the message Received "terminated" signal come from?

CircleCI output; I don't recall the exact text in my Ubuntu VM.

Is it run that is terminated, or a child process?

The run executable I've been debugging - it's killed due to that SIGUSR1 in a regular std.parallelism worker thread in the middle of the tests most of the time, apparently only with shared druntime/Phobos and a lot of GC threads compared to actually available CPU cores.

Maybe std.process needs to account for being interrupted by GC signals while waiting for a child process via waitpid()?

I've quickly checked std.process yesterday, and it seems to do the right thing when being interrupted - just waiting again: https://github.com/ldc-developers/phobos/blob/1ede700a54c73db33f2d1d2d4d45b0b4bec39e24/std/process.d#L1544-L1547

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants