New issue
Advanced search Search tips

Issue 875140 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 20
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

Segfault in SingleEntryPropertiesGetterForDrive::StartParseFileInfo

Project Member Reported by slangley@chromium.org, Aug 17

Issue description

Use sai.team1 test account.

Once file manager loads click on the team drive root, and wait. Will eventually segfault with

Received signal 11 SEGV_MAPERR 000000000080
#0 0x7fbf33df274c base::debug::StackTrace::StackTrace()
#1 0x7fbf33df2241 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7fbf26b4b0c0 <unknown>
#3 0x55c70b0b82b7 extensions::(anonymous namespace)::SingleEntryPropertiesGetterForDrive::StartParseFileInfo()
#4 0x55c70b0b7f8a extensions::(anonymous namespace)::SingleEntryPropertiesGetterForDrive::OnGetFileInfo()
#5 0x55c70b0b81b1 _ZN4base8internal7InvokerINS0_9BindStateIMN10extensions12_GLOBAL__N_135SingleEntryPropertiesGetterForDriveEFvN5drive9FileErrorENSt3__110unique_ptrINS6_13ResourceEntryENS8_14default_deleteISA_EEEEEJNS_7WeakPtrIS5_EEEEEFvS7_SD_EE3RunEPNS0_13BindStateBaseES7_OSD_
#6 0x55c70b11a8d5 drive::(anonymous namespace)::RunGetResourceEntryCallback()
#7 0x55c70b11f93a _ZN4base8internal7InvokerINS0_9BindStateIPFvRKNS_17RepeatingCallbackIFvN5drive9FileErrorENSt3__110unique_ptrINS4_13ResourceEntryENS6_14default_deleteIS8_EEEEEEESB_S5_EJSD_SB_EEEFvS5_EE7RunOnceEPNS0_13BindStateBaseES5_
#8 0x55c70a86e9e1 base::internal::ReplyAdapter<>()
#9 0x55c70a6eef07 _ZN4base8internal7InvokerINS0_9BindStateIPFvNS_12OnceCallbackIFvNSt3__110unique_ptrINS_5ValueENS4_14default_deleteIS6_EEEEEEEPNS5_IS9_NS7_IS9_EEEEEJSB_NS0_12OwnedWrapperISD_EEEEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#10 0x7fbf33db9dfd base::(anonymous namespace)::PostTaskAndReplyRelay::RunReply()
#11 0x7fbf33db9e9e _ZN4base8internal7InvokerINS0_9BindStateIPFvNS_12_GLOBAL__N_121PostTaskAndReplyRelayEEJS4_EEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#12 0x7fbf33d097a5 base::debug::TaskAnnotator::RunTask()
#13 0x7fbf33d3471a base::MessageLoop::RunTask()
#14 0x7fbf33d34c13 base::MessageLoop::DoWork()
#15 0x7fbf33e13029 base::MessagePumpLibevent::Run()
#16 0x7fbf33d341c4 base::MessageLoop::Run()
#17 0x7fbf33d672e9 base::RunLoop::Run()
#18 0x55c70b25c1ad ChromeBrowserMainParts::MainMessageLoopRun()
#19 0x7fbf30de8d77 content::BrowserMainLoop::RunMainMessageLoopParts()
#20 0x7fbf30deba76 content::BrowserMainRunnerImpl::Run()
#21 0x7fbf30de4f09 content::BrowserMain()
#22 0x7fbf3186247d content::ContentMainRunnerImpl::Run()
#23 0x7fbf340aef85 service_manager::Main()
#24 0x7fbf31860924 content::ContentMain()
#25 0x55c70a684a63 ChromeMain
#26 0x7fbf254862b1 __libc_start_main
#27 0x55c70a6848da _start
  r8: 0000000000000000  r9: 00007fbf33e85858 r10: 00001d42cd56fe38 r11: 0000000000000246
 r12: 00001d42d218e2b0 r13: 00001d42d22ef000 r14: 0000000000000000 r15: 0000000000000000
  di: 0000000000000001  si: 0000000000000001  bp: 00007ffffb75b520  bx: 00001d42d1f8e690
  dx: 0000000000000001  ax: 00001d42d2580220  cx: 00000000000004bb  sp: 00007ffffb75b260
  ip: 000055c70b0b82b7 efl: 0000000000010202 cgf: 002b000000000033 erf: 0000000000000004
 trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000080
[end of stack trace]
Calling _exit(1). Core file will not be generated.

 
I added 
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
index 7c28f863da6f..eb0cda808ff3 100644
--- a/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
+++ b/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
@@ -387,6 +387,9 @@ class SingleEntryPropertiesGetterForDrive {
   void StartParseFileInfo(bool shared_with_me) {
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
+    DCHECK(owner_resource_entry_);
+    DCHECK(properties_);
+
     FillEntryPropertiesValueForDrive(
         *owner_resource_entry_, shared_with_me, properties_.get());


Now I see

[79849:79849:0817/141111.294408:FATAL:private_api_drive.cc(391)] Check failed: properties_.                                                                                                                        
#0 0x7f3b7d61a74c base::debug::StackTrace::StackTrace()                                                                                                                                                            
#1 0x7f3b7d54e7db logging::LogMessage::~LogMessage()                                                                                                                                                               
#2 0x55c31b70f32e extensions::(anonymous namespace)::SingleEntryPropertiesGetterForDrive::StartParseFileInfo()                                                                                                     
#3 0x55c31b70ef8a extensions::(anonymous namespace)::SingleEntryPropertiesGetterForDrive::OnGetFileInfo()                                                                                                          


Owner: slangley@chromium.org
Status: Started (was: Available)
Project Member

Comment 3 by bugdroid1@chromium.org, Aug 17

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

commit c60115f819a76824a2e56612fa7da7ae564d7a2c
Author: Stuart Langley <slangley@google.com>
Date: Fri Aug 17 06:13:11 2018

Do not call GetResourceEntryCallback multiple times.

GetResourceEntryCallback is really on a once callback, and by processing
multiple team drive entries in the loop we introduce a race condition that
can cause a SIGSEGV in private_api_drive when the callback is fired multiple
times.

Followup work is to get the Deduplicated name for the team drive and store that
as the path so that the lookup will only match once.

Bug:  875140 
Change-Id: I35e381aa82d7c34e200ddc44b085205115fadd86
Reviewed-on: https://chromium-review.googlesource.com/1179483
Reviewed-by: Sam McNally <sammc@chromium.org>
Commit-Queue: Stuart Langley <slangley@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583974}
[modify] https://crrev.com/c60115f819a76824a2e56612fa7da7ae564d7a2c/components/drive/chromeos/file_system.cc

Labels: Merge-Request-69
Project Member

Comment 5 by sheriffbot@chromium.org, Aug 18

Labels: -Merge-Request-69 Merge-Review-69 Hotlist-Merge-Review
This bug requires manual review: M69 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: amineer@(Android), kariahda@(iOS), cindyb@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: -Merge-Review-69 Merge-Approved-69
Merge approved, M69.
Project Member

Comment 7 by bugdroid1@chromium.org, Aug 20

Labels: -merge-approved-69 merge-merged-3497
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/20f24b17644a7714c9faa5ebb0f144232ac92895

commit 20f24b17644a7714c9faa5ebb0f144232ac92895
Author: Stuart Langley <slangley@google.com>
Date: Mon Aug 20 22:35:18 2018

Do not call GetResourceEntryCallback multiple times.

GetResourceEntryCallback is really on a once callback, and by processing
multiple team drive entries in the loop we introduce a race condition that
can cause a SIGSEGV in private_api_drive when the callback is fired multiple
times.

Followup work is to get the Deduplicated name for the team drive and store that
as the path so that the lookup will only match once.

Bug:  875140 
Change-Id: I35e381aa82d7c34e200ddc44b085205115fadd86
Reviewed-on: https://chromium-review.googlesource.com/1179483
Reviewed-by: Sam McNally <sammc@chromium.org>
Commit-Queue: Stuart Langley <slangley@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#583974}(cherry picked from commit c60115f819a76824a2e56612fa7da7ae564d7a2c)
Reviewed-on: https://chromium-review.googlesource.com/1182461
Reviewed-by: Stuart Langley <slangley@chromium.org>
Cr-Commit-Position: refs/branch-heads/3497@{#729}
Cr-Branched-From: 271eaf50594eb818c9295dc78d364aea18c82ea8-refs/heads/master@{#576753}
[modify] https://crrev.com/20f24b17644a7714c9faa5ebb0f144232ac92895/components/drive/chromeos/file_system.cc

Status: Fixed (was: Started)

Sign in to add a comment