Skip to content

RDKEMW-13253:Dobby L2 fix#439

Merged
B-Larsen merged 6 commits into
rdkcentral:developfrom
Sonajeya31:topic/RDKEMW-13253-7
May 14, 2026
Merged

RDKEMW-13253:Dobby L2 fix#439
B-Larsen merged 6 commits into
rdkcentral:developfrom
Sonajeya31:topic/RDKEMW-13253-7

Conversation

@Sonajeya31
Copy link
Copy Markdown
Contributor

@Sonajeya31 Sonajeya31 commented May 14, 2026

Fix L2 test failures on GitHub Actions CI (cgroupv2 compatibility and GCOV coverage issues)

This PR addresses multiple cascading failures in the L2 test suite when running on GitHub Actions runners which use cgroupv2 (unified hierarchy) and have coverage instrumentation enabled.
Root Causes Fixed:

cgroupv2 Compatibility - The codebase assumed cgroupv1 (separate controller mounts). GitHub Actions uses cgroupv2 where all controllers share a single mount point. Updated DobbyEnv.cpp, IonMemoryPlugin.cpp, GpuPlugin.cpp, and DobbyTemplate.cpp to detect and handle cgroupv2. Also added runtime patching in test_utils.py to remove unsupported settings (swappiness, kernel memory, RT scheduling) from bundle configs.

GCOV Coverage Write Failures - Instrumented binaries (DobbyPluginLauncher) couldn't write .gcda files to /home/runner/work, causing hooks to exit with code 1 and breaking all container operations. Fixed by setting GCOV_PREFIX=/tmp/gcov at workflow level and passing GCOV environment to DobbyDaemon via sudo -E.

Network Setup Issues - DNS resolution and NAT not working in containers because eth0 was hardcoded but doesn't exist on GitHub runners, and systemd stub resolver doesn't work well in containers. Fixed by detecting default-route interface dynamically and forcing reliable DNS servers (1.1.1.1, 8.8.8.8).

OCI Hook Config Path - createContainer hooks run in container namespace and couldn't access host paths for config.json. Fixed by mounting config.json to /tmp/dobby_config.json inside container and adding fallback path resolution in DobbyPluginLauncher.

Invalid Interface Index in Networking - Netlink code was attempting to set addresses on interface index 0 (invalid), causing network setup failures. Added validation to reject invalid interface indices before setting addresses.

Test Procedure
Push PR to trigger GitHub Actions L2 test workflow
Verify all test groups pass:
basic_sanity_tests
container_manipulations
bundle_generation
plugin_launcher
command_line_containers
annotation_tests
start_from_bundle
thunder_plugin
network_tests
pid_limit_tests
memcr_tests

Type of Change
[Bug fix (non-breaking change which fixes an issue)
Requires Bitbake Recipe changes?
No - This PR contains only code fixes and CI workflow changes. No new dependencies, build options, or installed files are added.

Copilot AI review requested due to automatic review settings May 14, 2026 04:53
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot wasn't able to review any files in this pull request.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI review requested due to automatic review settings May 14, 2026 05:14
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 6 comments.

Comment thread bundle/lib/source/templates/OciConfigJson1.0.2-dobby.template Outdated
Comment thread bundle/lib/source/templates/OciConfigJsonVM1.0.2-dobby.template Outdated
Comment thread client/tool/source/Main.cpp
Comment thread client/tool/source/Main.cpp
Comment thread tests/L2_testing/test_runner/bundle/regenerate_bundles.py
Comment thread tests/L2_testing/test_runner/bundle/regenerate_bundles.py
Copilot AI review requested due to automatic review settings May 14, 2026 05:42
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 4 comments.

Comment thread bundle/lib/source/templates/OciConfigJson1.0.2-dobby.template Outdated
Comment thread bundle/lib/source/templates/OciConfigJsonVM1.0.2-dobby.template Outdated
Comment thread tests/L2_testing/test_runner/test_utils.py
Comment thread tests/L2_testing/test_runner/bundle/regenerate_bundles.py
Copilot AI review requested due to automatic review settings May 14, 2026 06:11
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 7 comments.

Comments suppressed due to low confidence (2)

client/tool/source/Main.cpp:123

  • Same as above: promise.set_value() in this callback can be invoked more than once if multiple events arrive, which will throw and can crash the CLI. Please guard/catch around set_value() so duplicate notifications don’t terminate the process.
    const waitParams *wp = static_cast<const waitParams*>(params);

    if (state == wp->state && containerId == wp->containerId)
    {
        AI_LOG_INFO("Wait complete");
        promise.set_value();
    }

tests/L2_testing/test_runner/memcr_tests.py:256

  • Same issue in params_memcr_test: with the updated untar_bundle behavior, bundle_path can be None on extraction/validation failure, but the function will still try to start the container. Add a bundle_ctx.valid / bundle_path check and return a clean failure message when the bundle couldn’t be prepared.
        # store container pids
        pids = wait_for_container_pids(container_id)
        skip_pid_checks = not bool(pids)
        if skip_pid_checks:
            test_utils.print_log("No pids reported by DobbyTool info; skipping memcr pid checkpoint validation",
                                 test_utils.Severity.warning)
        test_utils.print_log("container pids: [" + " ".join(map(str, pids)) + "]", test_utils.Severity.debug)

Comment thread bundle/lib/source/templates/OciConfigJson1.0.2-dobby.template Outdated
Comment thread bundle/lib/source/templates/OciConfigJsonVM1.0.2-dobby.template Outdated
Comment thread .github/workflows/L2-tests.yml Outdated
Comment thread client/tool/source/Main.cpp
Comment thread tests/L2_testing/test_runner/memcr_tests.py
Comment thread .github/workflows/L2-tests.yml
Comment thread tests/L2_testing/test_runner/test_utils.py
@Sonajeya31 Sonajeya31 changed the title Merge pull request #4 from rdkcentral/develop RDKEMW-13253:Dobby L2 fix May 14, 2026
Copilot AI review requested due to automatic review settings May 14, 2026 06:43
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 7 comments.

Comment thread tests/L2_testing/test_runner/bundle/regenerate_bundles.py
Comment thread tests/L2_testing/test_runner/bundle/regenerate_bundles.py
Comment thread tests/L2_testing/test_runner/bundle/regenerate_bundles.py
Comment thread tests/L2_testing/test_runner/annotation_tests.py
Comment thread tests/L2_testing/test_runner/network_tests.py
Comment thread .github/workflows/L2-tests.yml
Comment thread .github/workflows/L2-tests.yml
@Sonajeya31 Sonajeya31 force-pushed the topic/RDKEMW-13253-7 branch from ab11b4c to 376531b Compare May 14, 2026 07:21
@B-Larsen B-Larsen merged commit e15fc82 into rdkcentral:develop May 14, 2026
20 of 21 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators May 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants