Info
When archival is enabled for a test or test suite, resmoke.py sends a SIGABRT signal to its fixture processes to take a core dump of them (in addition to collecting the mongod data files). If a JavaScript test has already invoked the hang analyzer via an assert.soon(), then the core file generated from the hang analyzer will be overwritten.
[fsm_workload_test:agg_merge_when_matched_replace_with_new] 2020-05-26T08:34:20.234+0000 sh118695| Saved corefile dump_mongod.4235.core
...
[ShardedClusterFixture:job0:shard0:secondary0] Attempting to send SIGABRT from resmoke to mongod on port 20002 with pid 4235...
Note that the core dump taken by resmoke.py sending a SIGABRT signal is unlikely to match the thread stacks in the hang analyzer output because running the hang analyzer is expected to perturb the state of the MongoDB cluster.
Top User Comments
xgen-internal-githook commented on Thu, 15 Oct 2020 13:47:38 +0000:
Author:
{'name': 'vrachev', 'email': 'vlad.rachev@mongodb.com', 'username': 'vrachev'}
Message: SERVER-48705 disable taking cores during resmoke fixture teardown
Branch: v4.4
https://github.com/mongodb/mongo/commit/392093165d9b23f2ebaf5d6fe475ccbef4c86d3b
xgen-internal-githook commented on Mon, 22 Jun 2020 18:44:07 +0000:
Author:
{'name': 'vrachev', 'email': 'vlad.rachev@mongodb.com', 'username': 'vrachev'}
Message: SERVER-48705 resmoke.py sending SIGABRT to take core dumps on fixture teardown may overwrite core files from hang analyzer.
Adds an option to the hang-analyzer to kill processes after finishing analysis.
Updates assert.soon's usage of the hang-analyzer to use this option.
Branch: master
https://github.com/mongodb/mongo/commit/18f88ce0680ab946760b599437977ffd60c49678
robert.guo commented on Thu, 11 Jun 2020 13:28:53 +0000:
Once the hang analyzer from the shell's assert.soon() function has run, we should have all the diagnostic info we need and there would be no need to continue running the fixtures. We can ask the shell to SIGKILL all its fixtures after calling the hang analyzer so the archival code does not have to do it later on.