New issue
Advanced search Search tips

Issue 720542 link

Starred by 1 user

Issue metadata

Status: Archived
Owner:
Closed: May 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

Memory leak in session_manager container_config_add_cgroup_device from login_manager ParseDeviceList

Project Member Reported by jamescook@chromium.org, May 10 2017

Issue description

https://build.chromium.org/p/chromiumos.chromium/builders/amd64-generic-tot-asan-informational/builds/12996

chromeos-login-0.0.2-r2858: Error: /var/cache/portage/chromeos-base/chromeos-login/out/Default/session_manager_test: failed with exit code 1
chromeos-login-0.0.2-r2858:  * ERROR: chromeos-base/chromeos-login-0.0.2-r2858::chromiumos failed (test phase):
chromeos-login-0.0.2-r2858:  *   (no error message)
chromeos-login-0.0.2-r2858:  * 
chromeos-login-0.0.2-r2858:  * Call stack:
chromeos-login-0.0.2-r2858:  *     ebuild.sh, line   93:  Called src_test
chromeos-login-0.0.2-r2858:  *   environment, line 3637:  Called platform_src_test
chromeos-login-0.0.2-r2858:  *   environment, line 3209:  Called platform_pkg_test
chromeos-login-0.0.2-r2858:  *   environment, line 3191:  Called platform_test 'run' '/build/amd64-generic/var/cache/portage/chromeos-base/chromeos-login/out/Default/session_manager_test' '0' '' ''
chromeos-login-0.0.2-r2858:  *   environment, line 3242:  Called die
chromeos-login-0.0.2-r2858:  * The specific snippet of code:
chromeos-login-0.0.2-r2858:  *       "${cmd[@]}" || die
chromeos-login-0.0.2-r2858:  * 
chromeos-login-0.0.2-r2858:  * If you need support, post the output of `emerge --info '=chromeos-base/chromeos-login-0.0.2-r2858::chromiumos'`,
chromeos-login-0.0.2-r2858:  * the complete build log and the output of `emerge -pqv '=chromeos-base/chromeos-login-0.0.2-r2858::chromiumos'`.
chromeos-login-0.0.2-r2858: 
chromeos-login-0.0.2-r2858:  * ASAN error detected:
chromeos-login-0.0.2-r2858:  * 
chromeos-login-0.0.2-r2858:  * =================================================================
chromeos-login-0.0.2-r2858:  * ==17==ERROR: LeakSanitizer: detected memory leaks
chromeos-login-0.0.2-r2858:  * 
chromeos-login-0.0.2-r2858:  * Direct leak of 28 byte(s) in 1 object(s) allocated from:
chromeos-login-0.0.2-r2858:  *     #0 0x7f81e1e9e0fd in __interceptor_realloc (/var/cache/portage/chromeos-base/chromeos-login/out/Default/session_manager_test+0x7210fd)
chromeos-login-0.0.2-r2858:  *     #1 0x7f81e1664753 in container_config_add_cgroup_device /build/amd64-generic/var/cache/portage/chromeos-base/libcontainer/out/Default/../../../../../../../../../mnt/host/source/src/platform2/libcontainer/libcontainer.c:413:12
chromeos-login-0.0.2-r2858:  *     #2 0x7f81e16650a4 in container_config_add_device /build/amd64-generic/var/cache/portage/chromeos-base/libcontainer/out/Default/../../../../../../../../../mnt/host/source/src/platform2/libcontainer/libcontainer.c:474:7
chromeos-login-0.0.2-r2858:  *     #3 0x7f81e2287c39 in login_manager::(anonymous namespace)::ParseDeviceList(base::DictionaryValue const&, std::unique_ptr<container_config, void (*)(container_config*)>*) /build/amd64-generic/var/cache/portage/chromeos-base/chromeos-login/out/Default/../../../../../../../../../mnt/host/source/src/platform2/login_manager/container_config_parser.cc:408:5
chromeos-login-0.0.2-r2858:  *     #4 0x7f81e2287c39 in login_manager::(anonymous namespace)::ParseLinuxConfigDict(base::DictionaryValue const&, std::unique_ptr<container_config, void (*)(container_config*)>*) /build/amd64-generic/var/cache/portage/chromeos-base/chromeos-login/out/Default/../../../../../../../../../mnt/host/source/src/platform2/login_manager/container_config_parser.cc:490
chromeos-login-0.0.2-r2858:  *     #5 0x7f81e2287c39 in login_manager::(anonymous namespace)::ParseConfigDicts(base::DictionaryValue const&, base::DictionaryValue const&, base::FilePath const&, std::string const&, std::unique_ptr<container_config, void (*)(container_config*)>*) /build/amd64-generic/var/cache/portage/chromeos-base/chromeos-login/out/Default/../../../../../../../../../mnt/host/source/src/platform2/login_manager/container_config_parser.cc:531
chromeos-login-0.0.2-r2858:  *     #6 0x7f81e2281076 in login_manager::ParseContainerConfig(std::string const&, std::string const&, std::string const&, std::string const&, std::string const&, base::FilePath const&, std::unique_ptr<container_config, void (*)(container_config*)>*) /build/amd64-generic/var/cache/portage/chromeos-base/chromeos-login/out/Default/../../../../../../../../../mnt/host/source/src/platform2/login_manager/container_config_parser.cc:575:8
chromeos-login-0.0.2-r2858:  *     #7 0x7f81e1f2129d in login_manager::ContainerConfigParserTest_TestBasicConfigAndroid_Test::TestBody() /build/amd64-generic/var/cache/portage/chromeos-base/chromeos-login/out/Default/../../../../../../../../../mnt/host/source/src/platform2/login_manager/container_config_parser_unittest.cc:203:3
chromeos-login-0.0.2-r2858:  *     #8 0x7f81e1759bef in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:2078:10
chromeos-login-0.0.2-r2858:  *     #9 0x7f81e1759bef in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:2114
chromeos-login-0.0.2-r2858:  *     #10 0x7f81e173b111 in testing::Test::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:2150:5
chromeos-login-0.0.2-r2858:  *     #11 0x7f81e173c510 in testing::TestInfo::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:2326:11
chromeos-login-0.0.2-r2858:  *     #12 0x7f81e173cd56 in testing::TestCase::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:2444:28
chromeos-login-0.0.2-r2858:  *     #13 0x7f81e17464c6 in testing::internal::UnitTestImpl::RunAllTests() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:4315:43
chromeos-login-0.0.2-r2858:  *     #14 0x7f81e175a8af in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:2078:10
chromeos-login-0.0.2-r2858:  *     #15 0x7f81e175a8af in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:2114
chromeos-login-0.0.2-r2858:  *     #16 0x7f81e1746081 in testing::UnitTest::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.7.0/work/gtest-1.7.0-abi_x86_64.amd64/./src/gtest.cc:3926:10
chromeos-login-0.0.2-r2858:  *     #17 0x7f81e22487c5 in RUN_ALL_TESTS() /build/amd64-generic/var/cache/portage/chromeos-base/chromeos-login/out/Default/../../../../../../../usr/include/gtest/gtest.h:2288:46
chromeos-login-0.0.2-r2858:  *     #18 0x7f81e22487c5 in main /build/amd64-generic/var/cache/portage/chromeos-base/chromeos-login/out/Default/../../../../../../../../../mnt/host/source/src/platform2/login_manager/session_manager_testrunner.cc:11
chromeos-login-0.0.2-r2858:  *     #19 0x7f81df602815 in __libc_start_main /var/tmp/portage/cross-x86_64-cros-linux-gnu/glibc-2.23-r6/work/glibc-2.23/csu/../csu/libc-start.c:289
chromeos-login-0.0.2-r2858:  *     #20 0x7f81e1dd74b8 in _start (/var/cache/portage/chromeos-base/chromeos-login/out/Default/session_manager_test+0x65a4b8)

dgreid, maybe a problem in libcontainer?  I don't see any recent changes in src/platform2/login_manager

 

Comment 1 by dgreid@chromium.org, May 10 2017

Status: Started (was: Assigned)
looks like it.
I'm still seeing similar leaks on builds today:

https://build.chromium.org/p/chromiumos.chromium/builders/amd64-generic-tot-asan-informational/builds/13015

but I thought I saw a fix go by. Did a fix land, or is there still an issue?

Comment 3 by dgreid@chromium.org, May 12 2017

damn commit queue hasn't been cooperating this week. I'll give it another try now.
For other gardeners: Fix is https://chromium-review.googlesource.com/c/501535/

Project Member

Comment 5 by bugdroid1@chromium.org, May 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/a34f81648ff81edb316aff722c39f3afd41b5149

commit a34f81648ff81edb316aff722c39f3afd41b5149
Author: Dylan Reid <dgreid@chromium.org>
Date: Sat May 13 03:58:04 2017

libcontainer: free cgroup_devices during destruction

cgroup_devices needs to be freed when the container is destroyed.

BUG= 720542 
TEST=build, unittests pass, containers run on device.

Change-Id: Ia87631116579acda9baa7e174689f631fc51cc73
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/501535
Reviewed-by: Stephen Barber <smbarber@chromium.org>

[modify] https://crrev.com/a34f81648ff81edb316aff722c39f3afd41b5149/libcontainer/libcontainer.c

Comment 6 by dgreid@chromium.org, May 15 2017

Status: Fixed (was: Started)

Comment 7 by dchan@chromium.org, Aug 1 2017

Labels: VerifyIn-61

Comment 8 by dchan@chromium.org, Jan 22 2018

Status: Archived (was: Fixed)

Sign in to add a comment