Closed (outdated)
Project:
Drupal core
Version:
8.6.x-dev
Component:
other
Priority:
Major
Category:
Bug report
Assigned:
Unassigned
Reporter:
Created:
10 Jan 2017 at 14:23 UTC
Updated:
26 May 2019 at 10:13 UTC
Jump to comment: Most recent, Most recent file
Comments
Comment #2
catch@alexpott mentioned that the test failures appear to be in the dfac() after updates have run (and before post_updates have run), not necessarily when running the updates themselves. Our update tests don't do any large-scale content updates, which would be the obvious culprit if they did.
Comment #3
tacituseu commentedhttp://git.php.net/?p=php-src.git;a=commitdiff;h=f29c98c1289b00e0dbb58631df6a5e006f5311d1 was fixed in PHP 5.5.24/5.6.9, testbot uses 5.6.7 for testing and yet it wasn't failing, so unless there is some other factor it would exclude it as culprit.
Comment #4
mpdonadioDid we explore using USE_ZEND_ALLOC=0 to see if that helped matters? Needs to be in the environment itself, so I don't think we can make a patch to test this.
Comment #5
alexpottWell
USE_ZEND_ALLOC=0is not going to help matters... it might elucidate where the problem is coming from - or might not.Comment #6
berdirI think as a starting point, some numbers on what the impact is on memory_get_peak_usage() for having gc enabled or not would be good. going to be different again when you actually have a serious amount of data to process but it might be a useful starting point
Comment #7
tacituseu commentedNot sure if there is less invasive way to do it.
Comment #8
tacituseu commentedComment #9
tacituseu commentedOnce more.
Comment #10
tacituseu commentedTop offenders are: system_update_8004, system_update_8013, node_update_8003.
Legend:
Before - peak before given update
After - peak after given update
Used - memory used by the update
Request - peak of the whole request (with couple of other updates)
all in MiB
So worst-case is 4 times as much memory used.
In the meantime testbot has been updated and is now using PHP 5.5.38, so it might no longer be an issue.
Notice: system_update_8004 is the one found in backtraces of segfaults from #2828559-115: UpdatePathTestBase tests randomly failing.
Comment #11
wim leersObservations:
system_update_8004()andnode_update_8003()are both updating entity definitions.system_update_8013()is installing a modulePerhaps we can disable GC specifically for updating entity definitions and module (un)installation?
Comment #12
alexpottThing is according to the test results all the hook_update_N ran - otherwise the test fails would have been different. The tests showed that the hook_update_N had finished but the post updates had not run. So either it crashed in drupal_flush_all_caches() or the first post update. The first post update is quite innocuous BUT rebuilding all the caches that it might require is not.
Comment #14
xjmThis was accidentally opened as a triaged critical including with the tag because of an issue clone. We should be really careful not to do that as that means the criticals don't actually get discussed in triage.
Since this is a followup to resolve future test/stability issues without a failure in HEAD currently, it should be major.
Comment #15
tacituseu commentedChecking environments for garbage collector issues by forcing
gc_collect_cycles()after each test.Comment #17
Pavan B S commentedLine exceeding 80 characters
There is one line which exceeds more than 80 characters.Applying the patch, please review
Comment #18
Pavan B S commentedComment #20
tacituseu commented@Pavan B S: these are just testing/debugging patches, not meant to be commited.
Comment #21
xjmThanks @Pavan B S and @tacituseu. Unchecking credit for @Pavan B S as per #20.
In #2828559: UpdatePathTestBase tests randomly failing we never conclusively determined if PHP 7 was affected by the same failure or if it was a different random failure at the time, but the fix does not do a PHP version check. (This is unlike the fix in #2859704: Intermittent segfaults on DrupalCI (some "did not complete due to a fatal error" with no additional info) where we only disabled it for PHP versions less than PHP 7.) Here's a patch that reverts #2828559: UpdatePathTestBase tests randomly failing to check the baseline of fails on both PHP 5.6 and PHP 7.
Comment #22
tacituseu commentedPHP versions on testbot changed since the time #2828559: UpdatePathTestBase tests randomly failing was committed, at the time they were PHP 5.5.23, PHP 5.6.7 and PHP 7.0.16-dev, one of the updates might've very well fixed that, or growth of the codebase just moved the segfault to
FileFieldWidgetTest.I tried testing for previous
FrontPageTestfailure with revertedDrupalKernelpatch and it didn't trigger (see: #2879048-97: Ignore: patch testing issue for #2919863).Comment #23
tacituseu commentedI think we got it, keeping references to byproducts of
core/lib/Drupal/Core/Extension/ModuleHandler.php::buildModuleDependencies()stabilized it ;)
Attached with control patch from @Lendude and another not limited to
FileFieldWidgetTestto check if it just moved to other place.Results in other issue: test and control.
Comment #24
mpdonadioBased off bugs references in https://www.drupal.org/node/2898721#comment-12198555, I think this indefinitely plausible since any graph can result in circular references.
Comment #27
alexpottThis no longer exists in 8.8.x as we've dropped support for PHP5