diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d1e1d54ec03..1f51ada27b5 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,6 +3,7 @@ "runArgs": [ "--name=mongo-dev-${containerWorkspaceFolderBasename}-${devcontainerId}" ], + "initializeCommand": "${localWorkspaceFolder}/.devcontainer/initialize.sh", "build": { "dockerfile": "./Dockerfile", "context": "..", diff --git a/.devcontainer/initialize.sh b/.devcontainer/initialize.sh new file mode 100755 index 00000000000..99c4f8381c5 --- /dev/null +++ b/.devcontainer/initialize.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# MongoDB Development Container Host Initialization Script +# This script runs on the host machine before the container starts. + +set -euo pipefail + +# Configure core dump pattern in the Docker VM +# This is a kernel-level setting that cannot be modified from within unprivileged containers, +# so we use nsenter to enter the Docker VM's mount namespace and set it there. +echo "Configuring core dump pattern in Docker VM..." +docker run --rm --privileged --pid=host \ + alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 \ + nsenter -t 1 -m -- sh -c "echo 'dump_%e.%p.core' > /proc/sys/kernel/core_pattern" \ + 2>/dev/null || { + echo "Warning: Could not set core dump pattern (this is expected on non-Docker Desktop environments)" +} + +echo "Host initialization complete" diff --git a/evergreen/devcontainer_test.sh b/evergreen/devcontainer_test.sh index aa6ba06eeab..0f7aa108bc7 100755 --- a/evergreen/devcontainer_test.sh +++ b/evergreen/devcontainer_test.sh @@ -96,6 +96,17 @@ devcontainer_run() { devcontainer exec --workspace-folder . --id-label "test-id=${TEST_ID}" --remote-env CI=true "$@" } +echo "Checking core dump pattern configuration..." +CORE_PATTERN=$(devcontainer_run cat /proc/sys/kernel/core_pattern) +if [[ "$CORE_PATTERN" == "dump_%e.%p.core" ]]; then + echo "✓ Core dump pattern correctly set to: $CORE_PATTERN" +else + echo "✗ Core dump pattern is: $CORE_PATTERN (expected: dump_%e.%p.core)" + echo " The initializeCommand may have failed to set the kernel parameter" + exit 1 +fi + +echo "" echo "Checking GCC version..." devcontainer_run gcc --version