New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 595105 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Last visit > 30 days ago
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

Handle leak in content::BrowserGpuMemoryBufferManager.

Project Member Reported by reillyg@chromium.org, Mar 15 2016

Issue description

Dr. Memory reports that content::BrowserGpuMemoryBufferManager is leaking handles allocate through content::GpuMemoryBufferImplSharedMemory::Create:

https://build.chromium.org/p/chromium.memory.fyi/builders/Windows%20Browser%20%28DrMemory%20full%29%20%288%29/builds/5164

HANDLE LEAK: KERNEL handle 0x00000d98 and 3 similar handle(s) were opened but not closed:
# 0 system call NtDuplicateObject
# 1 KERNELBASE.dll!DuplicateHandle                                            +0x68     (0x750dc4e7 <KERNELBASE.dll+0xc4e7>)
# 2 KERNEL32.dll!DuplicateHandle                                              +0x4b     (0x768a18b2 <KERNEL32.dll+0x118b2>)
# 3 base.dll!`anonymous namespace'::CreateFileMappingWithReducedPermissions    [base\memory\shared_memory_win.cc:92]
# 4 base.dll!base::SharedMemory::Create                                        [base\memory\shared_memory_win.cc:225]
# 5 base.dll!base::SharedMemory::CreateAndMapAnonymous                         [base\memory\shared_memory_win.cc:183]
# 6 content.dll!content::GpuMemoryBufferImplSharedMemory::Create               [content\common\gpu\client\gpu_memory_buffer_impl_shared_memory.cc:52]
# 7 content.dll!content::BrowserGpuMemoryBufferManager::HandleCreateGpuMemoryBufferOnIO [content\browser\gpu\browser_gpu_memory_buffer_manager.cc:501]
# 8 content.dll!base::internal::Invoker<>::Run                                 [base\bind_internal.h:352]
# 9 base.dll!base::debug::TaskAnnotator::RunTask                               [base\debug\task_annotator.cc:51]
#10 base.dll!base::MessageLoop::RunTask                                        [base\message_loop\message_loop.cc:476]
#11 base.dll!base::MessageLoop::DeferOrRunPendingTask                          [base\message_loop\message_loop.cc:485]
#12 base.dll!base::MessageLoop::DoWork                                         [base\message_loop\message_loop.cc:597]
#13 base.dll!base::MessagePumpForIO::DoRunLoop                                 [base\message_loop\message_pump_win.cc:485]
#14 base.dll!base::MessageLoop::RunHandler                                     [base\message_loop\message_loop.cc:440]
#15 base.dll!base::MessageLoop::Run                                            [base\message_loop\message_loop.cc:293]
#16 base.dll!base::Thread::Run                                                 [base\threading\thread.cc:202]
#17 content.dll!content::BrowserThreadImpl::IOThreadRun                        [content\browser\browser_thread_impl.cc:215]
#18 content.dll!content::BrowserThreadImpl::Run                                [content\browser\browser_thread_impl.cc:251]
#19 base.dll!base::Thread::ThreadMain                                          [base\threading\thread.cc:254]
#20 base.dll!base::`anonymous namespace'::ThreadFunc                           [base\threading\platform_thread_win.cc:84]
#21 KERNEL32.dll!BaseThreadInitThunk                                          +0x11     (0x768a337a <KERNEL32.dll+0x1337a>)
Note: @0:05:49.327 in thread 2696
Note: handles created with the same callstack are closed here:
Note: # 0 system call NtClose
Note: # 1 KERNELBASE.dll!CloseHandle                                                +0x2c     (0x750dc463 <KERNELBASE.dll+0xc463>)
Note: # 2 KERNEL32.dll!CloseHandle                                                  +0x27     (0x768a1418 <KERNEL32.dll+0x11418>)
Note: # 3 base.dll!base::SharedMemory::Close                                         [base\memory\shared_memory_win.cc:339]
Note: # 4 cc.dll!cc::OneCopyTileTaskWorkerPool::StagingBuffer::~StagingBuffer        [cc\raster\one_copy_tile_task_worker_pool.cc:125]
Note: # 5 cc.dll!cc::OneCopyTileTaskWorkerPool::ReduceMemoryUsage                    [cc\raster\one_copy_tile_task_worker_pool.cc:693]
Note: # 6 cc.dll!base::internal::Invoker<>::Run                                      [base\bind_internal.h:352]
Note: # 7 base.dll!base::debug::TaskAnnotator::RunTask                               [base\debug\task_annotator.cc:51]
Note: # 8 base.dll!base::MessageLoop::RunTask                                        [base\message_loop\message_loop.cc:476]
Note: # 9 base.dll!base::MessageLoop::DeferOrRunPendingTask                          [base\message_loop\message_loop.cc:485]
Note: #10 base.dll!base::MessageLoop::DoDelayedWork                                  [base\message_loop\message_loop.cc:635]
Note: #11 base.dll!base::MessagePumpForUI::DoRunLoop                                 [base\message_loop\message_pump_win.cc:172]
Note: #12 base.dll!base::MessageLoop::RunHandler                                     [base\message_loop\message_loop.cc:440]
Note: #13 content::RunThisRunLoop                                                    [content\public\test\test_utils.cc:137]
Note: #14 content::RunAllPendingInMessageLoop                                        [content\public\test\test_utils.cc:146]
Note: #15 InProcessBrowserTest::RunTestOnMainThreadLoop                              [chrome\test\base\in_process_browser_test.cc:514]
Note: #16 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop                     [content\public\test\browser_test_base.cc:309]
Note: #17 ChromeBrowserMainParts::PreMainMessageLoopRunImpl                          [chrome\browser\chrome_browser_main.cc:1770]
Note: #18 ChromeBrowserMainParts::PreMainMessageLoopRun                              [chrome\browser\chrome_browser_main.cc:1144]
Note: #19 content.dll!content::BrowserMainLoop::PreMainMessageLoopRun                [content\browser\browser_main_loop.cc:941]
Note: #20 content.dll!base::internal::Invoker<>::Run                                 [base\bind_internal.h:352]
Note: #21 content.dll!content::StartupTaskRunner::RunAllTasksNow                     [content\browser\startup_task_runner.cc:45]
Note: #22 content.dll!content::BrowserMainLoop::CreateStartupTasks                   [content\browser\browser_main_loop.cc:816]
Note: #23 content.dll!content::BrowserMainRunnerImpl::Initialize                     [content\browser\browser_main_runner.cc:137]
Note: #24 content.dll!content::BrowserMain                                           [content\browser\browser_main.cc:40]
Note: #25 content.dll!content::RunNamedProcessTypeMain                               [content\app\content_main_runner.cc:398]
Note: #26 content.dll!content::ContentMainRunnerImpl::Run                            [content\app\content_main_runner.cc:769]
Note: #27 content.dll!content::ContentMain                                           [content\app\content_main.cc:19]
Note: #28 content::BrowserTestBase::SetUp                                            [content\public\test\browser_test_base.cc:282]
Note: #29 InProcessBrowserTest::SetUp                                                [chrome\test\base\in_process_browser_test.cc:255]
Note: #30 testing::internal::HandleExceptionsInMethodIfSupported<>                   [testing\gtest\src\gtest.cc:2458]
The report came from the `StreamsPrivateApiTest.NavigateToAnAttachment` test.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Mar 15 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/340688d696d4cc1a2e73ae4bef4e049d4225da22

commit 340688d696d4cc1a2e73ae4bef4e049d4225da22
Author: reillyg <reillyg@chromium.org>
Date: Tue Mar 15 22:53:37 2016

Suppress handle leaks in content::BrowserGpuMemoryBufferManager.

BUG=595105
TBR=glider@chromium.org
NOTRY=true

Review URL: https://codereview.chromium.org/1805223002

Cr-Commit-Position: refs/heads/master@{#381338}

[modify] https://crrev.com/340688d696d4cc1a2e73ae4bef4e049d4225da22/tools/valgrind/drmemory/suppressions_full.txt

Cc: stanisc@chromium.org

Comment 3 by vmi...@chromium.org, Feb 16 2017

Cc: reve...@chromium.org ericrk@chromium.org
Status: Available (was: Untriaged)

Comment 4 by vmi...@chromium.org, Feb 16 2017

Owner: reve...@chromium.org
Status: Assigned (was: Available)
reveman@ could you please take a look?
hm, there must be some case where we leak StagingBuffers as I can't see how we fail to free this otherwise.

Sign in to add a comment