New issue
Advanced search Search tips

Issue 709106 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner: ----
Closed: Jul 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug-Regression
Team-Security-UX



Sign in to add a comment

My manually-built Chromium crashes when I click on "View site information"

Reported by xftroxgpx@gmail.com, Apr 6 2017

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3064.0 Safari/537.36

Steps to reproduce the problem:
(this only happens with my manually built chromium, so you cannot reproduce this with chromium binaries from [1], but I did want to be able to track this issue, in case I find a fix, hence why creating issue here; might find something helpful)

Steps:
1. chro --user-data-dir=/tmp/$RANDOM
(this means no browser extensions loaded)
2. load a website: youtube.com
3. click on the green Secure lock icon which has the tooltip of "View site information"

[1] https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F$REVISION%2Fchrome-linux.zip?alt=media

What is the expected behavior?
Browser shows the "View site information" popup and does not crash.

What went wrong?
Entire browser closed/crashed.

[11880:11880:0406/193415.460253:ERROR:permission_context_base.cc(285)] !! perm=Geolocation!

[11880:11880:0406/193415.460350:ERROR:permission_context_base.cc(285)] !! perm=VideoCapture!

[11880:11880:0406/193415.460421:ERROR:permission_context_base.cc(285)] !! perm=AudioCapture!

[11880:11880:0406/193415.460483:ERROR:permission_context_base.cc(285)] !! perm=Notifications!

Received signal 11 SEGV_MAPERR 000000000010
#0 0x557892d5d23c base::debug::StackTrace::StackTrace()
#1 0x557892d5cda1 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7fba7120ffe0 <unknown>
#3 0x557892a58f3d PermissionContextBase::IsPermissionKillSwitchOn()
#4 0x557892a58d25 PermissionContextBase::GetPermissionStatus()
#5 0x557892a5c1dd PermissionManager::GetPermissionStatusHelper()
#6 0x557892a5c0d7 PermissionManager::GetPermissionStatus()
#7 0x5578949b4acb PageInfo::PresentSitePermissions()
#8 0x5578949b2be1 PageInfo::PageInfo()
#9 0x5578949389a2 PageInfoPopupView::PageInfoPopupView()
#10 0x557894938506 PageInfoPopupView::ShowPopup()
#11 0x557894826c26 BrowserView::ShowPageInfo()
#12 0x557894788f2d chrome::ShowPageInfo()
#13 0x557894838e25 LocationIconView::OnActivate()
#14 0x557894838c0e LocationIconView::OnMouseReleased()
#15 0x55789400bd31 views::InkDropHostView::OnMouseEvent()
#16 0x5578937125c2 ui::EventDispatcher::ProcessEvent()
#17 0x5578937123e9 ui::EventDispatcherDelegate::DispatchEvent()
#18 0x557893ff8969 views::internal::RootView::OnMouseReleased()
#19 0x557893fc8177 views::Widget::OnMouseEvent()
#20 0x5578937125c2 ui::EventDispatcher::ProcessEvent()
#21 0x5578937123e9 ui::EventDispatcherDelegate::DispatchEvent()
#22 0x557895e034ae ui::EventProcessor::OnEventFromSource()
#23 0x557895e0374b ui::EventSource::SendEventToSink()
#24 0x557893fd9e88 views::DesktopWindowTreeHostX11::DispatchMouseEvent()
#25 0x557893fdb05d views::DesktopWindowTreeHostX11::DispatchEvent()
#26 0x557893fdb420 views::DesktopWindowTreeHostX11::DispatchEvent()
#27 0x557893707f33 ui::PlatformEventSource::DispatchEvent()
#28 0x557893747c80 ui::X11EventSource::DispatchXEvents()
#29 0x557895e0c30c ui::(anonymous namespace)::XSourceDispatch()
#30 0x7fba7068b45a g_main_context_dispatch
#31 0x7fba7068b810 <unknown>
#32 0x7fba7068b8bc g_main_context_iteration
#33 0x557892d7df85 base::MessagePumpGlib::Run()
#34 0x557892d7b8de base::MessageLoop::RunHandler()
#35 0x557892d9f5d8 base::RunLoop::Run()
#36 0x557892c6b005 ChromeBrowserMainParts::MainMessageLoopRun()
#37 0x557891a48244 content::BrowserMainLoop::RunMainMessageLoopParts()
#38 0x557891a4ad02 content::BrowserMainRunnerImpl::Run()
#39 0x557891a4403c content::BrowserMain()
#40 0x557892a2c255 content::ContentMainRunnerImpl::Run()
#41 0x557893bac197 service_manager::Main()
#42 0x557892a2b234 content::ContentMain()
#43 0x55789160af81 ChromeMain
#44 0x7fba68dcb511 __libc_start_main
#45 0x55789160adfa _start
  r8: 0000000000000000  r9: 00007ffdfb630320 r10: 00002ab22d87c700 r11: 0000000000000000
 r12: 00007ffdfb630a20 r13: 0000000000000000 r14: 00007ffdfb630768 r15: 00007ffdfb630aa0
  di: 00002ab22b49d027  si: 0000000000000000  bp: 00007ffdfb630950  bx: 0000000000000000
  dx: 00007fba696e5ca0  ax: 00007ffdfb630768  cx: 3d6d726570202121  sp: 00007ffdfb630760
  ip: 0000557892a58f3d efl: 0000000000010206 cgf: 002b000000000033 erf: 0000000000000004
 trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000010
[end of stack trace]
Calling _exit(1). Core file will not be generated.

Crashed report ID: no

How much crashed? Whole browser

Is it a problem with a plugin? N/A 

Did this work before? Yes no idea

Chrome version: 59.0.3064.0  Channel: n/a
OS Version: 
Flash Version: 

applied small patch to LOG which perm is accessed in IsPermissionKillSwitchOn, so I can see it before the crash

if necessary to know, "chro" eventually calls this chromium-launcher: https://github.com/xftroxgpx/chromium-launcher
 
permissions_sigsegv.patch
7.4 KB Download
chro
814 bytes View Download
chromium
1.2 KB View Download
args.gn
93.3 KB Download
Labels: Needs-Bisect Needs-Triage-M59
The actual way that I'm building chromium on ArchLinux may seem a little off, but here it is: https://github.com/xftroxgpx/a3/tree/02d3ea99963338546376cfd28ac077cc170a3aa9/system/Z575/OSes/3archlinux/on_baremetal/filesystem_now/archlinux/home/xftroxgpx/build/1packages/chro/4_chromium-dev-git

I don't expect anyone to help me, because of the amount of patches that I'm applying on top of it - which in all honesty may be causing this very issue and I just don't know it, yet.

So, feel free to ignore this. Meanwhile I'll try to figure it out.

chromium-flags.conf
3.6 KB Download
Components: Build
Labels: TE-NeedsTriageHelp
I'm currently recompiling, I had to export a new function that would flush the LOG(ERROR) <<  calls, because I think I'm not seeing all the log lines due to the crash, unless flushing after each line.

Compiling takes like 7 hours, for me, see you soon :D
permissions_sigsegv.patch
12.6 KB Download
The output with the above patch changes is:

[5126:5126:0407/185453.000743:ERROR:variations_associated_data.cc(171)] !! in GetVariationParamValue, trial_name=PermissionsKillSwitch param_name=VideoCapture!

[5126:5126:0407/185453.000757:ERROR:field_trial_params.cc(24)] in GetFieldTrialParams before

[5126:5126:0407/185453.000771:ERROR:field_trial_params.cc(28)] in GetFieldTrialParams after 0

[5126:5126:0407/185453.000783:ERROR:field_trial_params.cc(65)] in GetFieldTrialParamValue's BEFORE RETURN

[5126:5126:0407/185453.000795:ERROR:permission_context_base.cc(294)] !! in PermissionContextBase::IsPermissionKillSwitchOn() befRETURN

[5126:5126:0407/185453.000844:ERROR:permission_context_base.cc(285)] !! in PermissionContextBase::IsPermissionKillSwitchOn() BEFORE 9

[5126:5126:0407/185453.000863:ERROR:permission_util.cc(23)] !! in GetPermissionString BEFORE 

[5126:5126:0407/185453.000875:ERROR:permission_util.cc(25)] !! in GetPermissionString stillBEFORE 9

[5126:5126:0407/185453.000857:ERROR:permission_context_base.cc(287)] !! in PermissionContextBase::IsPermissionKillSwitchOn() perm=AudioCapture!

[5126:5126:0407/185453.000890:ERROR:permission_context_base.cc(289)] !! in PermissionContextBase::IsPermissionKillSwitchOn() AFTER

[5126:5126:0407/185453.000902:ERROR:permission_util.cc(23)] !! in GetPermissionString BEFORE 

[5126:5126:0407/185453.000912:ERROR:permission_util.cc(25)] !! in GetPermissionString stillBEFORE 9

[5126:5126:0407/185453.000924:ERROR:variations_associated_data.cc(171)] !! in GetVariationParamValue, trial_name=PermissionsKillSwitch param_name=AudioCapture!

[5126:5126:0407/185453.000936:ERROR:field_trial_params.cc(24)] in GetFieldTrialParams before

[5126:5126:0407/185453.000948:ERROR:field_trial_params.cc(28)] in GetFieldTrialParams after 0

[5126:5126:0407/185453.000959:ERROR:field_trial_params.cc(65)] in GetFieldTrialParamValue's BEFORE RETURN

[5126:5126:0407/185453.000971:ERROR:permission_context_base.cc(294)] !! in PermissionContextBase::IsPermissionKillSwitchOn() befRETURN

[5126:5126:0407/185453.001020:ERROR:permission_context_base.cc(285)] !! in PermissionContextBase::IsPermissionKillSwitchOn() BEFORE 6

[5126:5126:0407/185453.001039:ERROR:permission_util.cc(23)] !! in GetPermissionString BEFORE 

[5126:5126:0407/185453.001055:ERROR:permission_util.cc(25)] !! in GetPermissionString stillBEFORE 6

[5126:5126:0407/185453.001033:ERROR:permission_context_base.cc(287)] !! in PermissionContextBase::IsPermissionKillSwitchOn() perm=Notifications!

[5126:5126:0407/185453.001067:ERROR:permission_context_base.cc(289)] !! in PermissionContextBase::IsPermissionKillSwitchOn() AFTER

[5126:5126:0407/185453.001080:ERROR:permission_util.cc(23)] !! in GetPermissionString BEFORE 

[5126:5126:0407/185453.001092:ERROR:permission_util.cc(25)] !! in GetPermissionString stillBEFORE 6

[5126:5126:0407/185453.001102:ERROR:variations_associated_data.cc(171)] !! in GetVariationParamValue, trial_name=PermissionsKillSwitch param_name=Notifications!

[5126:5126:0407/185453.001116:ERROR:field_trial_params.cc(24)] in GetFieldTrialParams before

[5126:5126:0407/185453.001126:ERROR:field_trial_params.cc(28)] in GetFieldTrialParams after 0

[5126:5126:0407/185453.001137:ERROR:field_trial_params.cc(65)] in GetFieldTrialParamValue's BEFORE RETURN

[5126:5126:0407/185453.001150:ERROR:permission_context_base.cc(294)] !! in PermissionContextBase::IsPermissionKillSwitchOn() befRETURN

[5126:5126:0407/185453.001196:ERROR:permission_util.cc(23)] !! in GetPermissionString BEFORE 

[5126:5126:0407/185453.001210:ERROR:permission_util.cc(25)] !! in GetPermissionString stillBEFORE 6

Received signal 11 SEGV_MAPERR 000000000010
#0 0x5562302a1cd7 base::debug::StackTrace::StackTrace()
#1 0x5562302a184f base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7f43bb414fe0 <unknown>
#3 0x55622ffa7ef6 PermissionContextBase::IsPermissionKillSwitchOn()
#4 0x55622ffa7cd0 PermissionContextBase::GetPermissionStatus()
#5 0x55622ffab35d PermissionManager::GetPermissionStatusHelper()
#6 0x55622ffab262 PermissionManager::GetPermissionStatus()
#7 0x556231ea5fe8 PageInfo::PresentSitePermissions()
#8 0x556231ea410a PageInfo::PageInfo()
#9 0x556231e2d73b PageInfoPopupView::PageInfoPopupView()
#10 0x556231e2d296 PageInfoPopupView::ShowPopup()
#11 0x556231d21891 BrowserView::ShowPageInfo()
#12 0x556231c88760 chrome::ShowPageInfo()
#13 0x556231d33380 LocationIconView::OnActivate()
#14 0x556231d33186 LocationIconView::OnMouseReleased()
#15 0x55623152528c views::InkDropHostView::OnMouseEvent()
#16 0x556230c4382b ui::EventDispatcher::ProcessEvent()
#17 0x556230c43671 ui::EventDispatcherDelegate::DispatchEvent()
#18 0x5562315129a9 views::internal::RootView::OnMouseReleased()
#19 0x5562314e3f43 views::Widget::OnMouseEvent()
#20 0x556230c4382b ui::EventDispatcher::ProcessEvent()
#21 0x556230c43671 ui::EventDispatcherDelegate::DispatchEvent()
#22 0x5562332a15ce ui::EventProcessor::OnEventFromSource()
#23 0x5562332a1866 ui::EventSource::SendEventToSink()
#24 0x5562314f52f7 views::DesktopWindowTreeHostX11::DispatchMouseEvent()
#25 0x5562314f6487 views::DesktopWindowTreeHostX11::DispatchEvent()
#26 0x5562314f683d views::DesktopWindowTreeHostX11::DispatchEvent()
#27 0x556230c39545 ui::PlatformEventSource::DispatchEvent()
#28 0x556230c7823a ui::X11EventSource::DispatchXEvents()
#29 0x5562332aa2e9 ui::(anonymous namespace)::XSourceDispatch()
#30 0x7f43ba89045a g_main_context_dispatch
#31 0x7f43ba890810 <unknown>
#32 0x7f43ba8908bc g_main_context_iteration
#33 0x5562302c1e26 base::MessagePumpGlib::Run()
#34 0x5562302bf886 base::MessageLoop::RunHandler()
#35 0x5562302e2f15 base::RunLoop::Run()
#36 0x5562301b2dd8 ChromeBrowserMainParts::MainMessageLoopRun()
#37 0x55622efd2963 content::BrowserMainLoop::RunMainMessageLoopParts()
#38 0x55622efd543d content::BrowserMainRunnerImpl::Run()
#39 0x55622efce748 content::BrowserMain()
#40 0x55622ff7bdbf content::ContentMainRunnerImpl::Run()
#41 0x5562310d0f44 service_manager::Main()
#42 0x55622ff7adf2 content::ContentMain()
#43 0x55622eba0d00 ChromeMain
#44 0x7f43b2fd0511 __libc_start_main
#45 0x55622eba0b7a _start
  r8: 0000000000000000  r9: 00007ffdb152c3e0 r10: 0000000000000010 r11: 0000000000000010
 r12: 00007ffdb152cae0 r13: 0000000000000000 r14: 00007ffdb152c8e0 r15: 0000000000000000
  di: 000011e69728e265  si: 0000000000000000  bp: 0ccccccccccccccc  bx: 00007ffdb152c8e8
  dx: 00007f43b38eaca0  ax: 00007ffdb152c8e8  cx: 0000000000000000  sp: 00007ffdb152c8a0
  ip: 000055622ffa7ef6 efl: 0000000000010202 cgf: 002b000000000033 erf: 0000000000000004
 trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000010
[end of stack trace]
Calling _exit(1). Core file will not be generated.


And I still can't understand why it would segfault, assuming all logs are indeed flushed and none missing from output, this time.

Hmm...Maybe I should gdb it...
It crashes when accessing: content_settings_type_
and I'm not sure what to make of it.

[2108:2108:0407/195443.935004:ERROR:variations_associated_data.cc(171)] !! in GetVariationParamValue, trial_name=PermissionsKillSwitch param_name=Notifications!

[2108:2108:0407/195443.935013:ERROR:field_trial_params.cc(24)] in GetFieldTrialParams before

[2108:2108:0407/195443.935022:ERROR:field_trial_params.cc(28)] in GetFieldTrialParams after 0

[2108:2108:0407/195443.935030:ERROR:field_trial_params.cc(65)] in GetFieldTrialParamValue's BEFORE RETURN

[2108:2108:0407/195443.935038:ERROR:permission_context_base.cc(296)] !! in PermissionContextBase::IsPermissionKillSwitchOn() befRETURN

[2108:2108:0407/195443.935136:ERROR:permission_util.cc(23)] !! in GetPermissionString BEFORE 

[2108:2108:0407/195443.935146:ERROR:permission_util.cc(25)] !! in GetPermissionString stillBEFORE 6

[2108:2108:0407/195443.935155:ERROR:permission_util.cc(31)] !! in GetPermissionString before returning Notifications 6

[2108:2108:0407/195443.935266:ERROR:permission_context_base.cc(285)] !! in PermissionContextBase::IsPermissionKillSwitchOn() BEFORE1 

Ran as:
gdb -tui -directory=/tmp/out/Default/ -directory=/home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/out/Default/ -directory=/home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/ -x /home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/gdb_cmds --args /usr/lib/chromium/chromium --ssl-version-min=tls1 --disk-cache-dir=/tmp/chromiumcache --disable-sync-preferences --disable-plugins --cipher-suite-blacklist=0x0001,0x0002,0x0004,0x0005,0x0017,0x0018,0xc002,0xc007,0xc00c,0xc011,0xc016,0xff80,0xff81,0xff82,0xff83 --disable-sync-preferences --disable-plugins --cipher-suite-blacklist=0x0001,0x0002,0x0004,0x0005,0x0017,0x0018,0xc002,0xc007,0xc00c,0xc011,0xc016,0xff80,0xff81,0xff82,0xff83 --disable-component-extensions-with-background-pages --disable-background-networking --disable-internal-flash --disable-bundled-ppapi-flash --disable-default-apps --ssl-version-min=tls1 --disallow-autofill-sync-credential --disable-device-discovery-notifications --no-pings --disable-media-source --disable-ntp-other-sessions-menu --disable-prefixed-encrypted-media --disable-touch-adjustment --disable-views-rect-based-targeting --disable-webgl --disable-account-consistency --enable-async-dns --enable-deferred-image-decoding --enable-download-resumption --enable-drop-sync-credential --disable-material-design-ntp --disable-new-avatar-menu --disable-new-profile-management --enable-offline-auto-reload-visible-only --disable-offline-auto-reload --enable-offline-load-stale-cache --enable-one-copy --enable-panels --disable-password-generation --enable-permissions-bubbles --disable-extensions-on-chrome-urls --disable-pinch-virtual-viewport --disable-pinch --enable-quic --disable-save-password-bubble --enable-session-crashed-bubble --disable-settings-window --use-simple-cache-backend=off --disable-smooth-scrolling --disable-sync-app-list --disable-sync-synced-notifications --enable-tcp-fastopen --disable-touch-editing --enable-web-based-signin --disable-zero-copy --enable-harfbuzz-rendertext --enable-impl-side-painting --enable-lcd-text --num-raster-threads=4 --disable-origin-chip --disable-overlay-scrollbar --remember-cert-error-decisions=-1 --enable-search-button-in-omnibox-always --disable-spelling-auto-correct --tab-capture-downscale-quality=fast --tab-capture-upscale-quality=fast --touch-events=disabled --wallet-service-use-sandbox=0 --enable-gpu-vsync --show-component-extension-options --disable-gpu-rasterization --disable-hyperlink-auditing --enable-vertical-tabs --disable-audio-support-for-desktop-share --disable-gpu --disable-features=NoStatePrefetch --ssl-version-min=tls1 --disable-sync-preferences --disable-plugins --cipher-suite-blacklist=0x0001,0x0002,0x0004,0x0005,0x0017,0x0018,0xc002,0xc007,0xc00c,0xc011,0xc016,0xff80,0xff81,0xff82,0xff83 --disk-cache-dir=/tmp/chromiumcache-DEBUG --user-data-dir=/tmp/chromium-DATA-DEBUG --disable-seccomp-sandbox --no-sandbox --disable-hang-monitor --allow-sandbox-debugging


Screenshot_2017-04-07_19-56-38.png
156 KB View Download
gdb_cmds
607 bytes View Download
le.patch
6.3 KB Download
gdb_console.log
78.8 KB View Download
gdb_cmds.out.log
134 KB View Download
the ptr value of content_settings_type_ aka &content_settings_type_

usually it is like: ptr=0x347e6a3498f0

but before crash is: ptr=0x10

If I assume that something set the pointer instead of the value, then 0x10 = 16 = CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER
but that seems very unlikely.

enum ContentSettingsType {
  // "DEFAULT" is only used as an argument to the Content Settings Window
  // opener; there it means "whatever was last shown".
  CONTENT_SETTINGS_TYPE_DEFAULT = -1,
  CONTENT_SETTINGS_TYPE_COOKIES = 0,
  CONTENT_SETTINGS_TYPE_IMAGES,
  CONTENT_SETTINGS_TYPE_JAVASCRIPT,
  CONTENT_SETTINGS_TYPE_PLUGINS,
  CONTENT_SETTINGS_TYPE_POPUPS,
  CONTENT_SETTINGS_TYPE_GEOLOCATION,
  CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
  CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE,
  CONTENT_SETTINGS_TYPE_MIXEDSCRIPT,
  CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC,
  CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
  CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS,
  CONTENT_SETTINGS_TYPE_PPAPI_BROKER,
  CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS,
  CONTENT_SETTINGS_TYPE_MIDI_SYSEX,
  CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS,
  CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,                             
  CONTENT_SETTINGS_TYPE_APP_BANNER,
  CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT,
  CONTENT_SETTINGS_TYPE_DURABLE_STORAGE,
  CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA,
  CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD,
  CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC,
  CONTENT_SETTINGS_TYPE_AUTOPLAY,
  // TODO(raymes): Deprecated. See  crbug.com/681709 . Remove after M60.
  CONTENT_SETTINGS_TYPE_PROMPT_NO_DECISION_COUNT,
  CONTENT_SETTINGS_TYPE_IMPORTANT_SITE_INFO,
  CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA,
  CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER,

ok, it's CONTENT_SETTINGS_TYPE_PLUGINS (aka 3)
and well, I've plugins disabled at build time
enable_plugins = false #Default = true                                          


[8505:8505:0407/230637.838336:ERROR:permission_manager.cc(549)] !! GetPermissionStatusHelper perm=3

[8505:8505:0407/230637.838350:ERROR:permission_context_base.cc(291)] !! in PermissionContextBase::IsPermissionKillSwitchOn() BEFORE1 

[8505:8505:0407/230637.838359:ERROR:permission_context_base.cc(293)] !! in PermissionContextBase::IsPermissionKillSwitchOn() BEFORE2 ptr=0x10

[8505:8505:0407/230637.838367:ERROR:permission_context_base.cc(295)] !! in PermissionContextBase::IsPermissionKillSwitchOn() BEFORE2 this=0


I'm still on it...
Hmm, as suspected: context is NULL (unless I'm missing something!!) at this point:

[4131:4131:0407/232353.106538:ERROR:permission_manager.cc(549)] !! GetPermissionStatusHelper perm=3

[4131:4131:0407/232353.106552:ERROR:permission_manager.cc(552)] !! GetPermissionStatusHelper (ptr) context=0

in: chrome/browser/permissions/permission_manager.cc
function: PermissionManager::GetPermissionStatusHelper(

if (IsConstantPermission(permission)) {
    return PermissionResult(GetContentSettingForConstantPermission(permission),
                            PermissionStatusSource::UNSPECIFIED);
  }
  LOG(ERROR) << "!! GetPermissionStatusHelper perm="<< permission <<"\n";
  ::logging::FlushLogFile();
  PermissionContextBase* context = GetPermissionContext(permission);
  LOG(ERROR) << "!! GetPermissionStatusHelper (ptr) context="<< context <<"\n";
  ::logging::FlushLogFile();
  PermissionResult result = context->GetPermissionStatus(
      nullptr /* render_frame_host */, requesting_origin.GetOrigin(),
      embedding_origin.GetOrigin());


So, at this point, perhaps someone could reproduce this by building with
enable_plugins = false
and then clicking on View Site Information
see if this crashes.

Meanwhile I'll try to figure out a workaround (but do know that I'm mostly stumbling around in the dark not knowing what I'm doing here hehe)

permissions_sigsegv.patch
10.5 KB Download
Ok, I'm starting to understand it:
in ./chrome/browser/permissions/permission_manager.cc

This part in:
PermissionManager::PermissionManager(Profile* profile)
which is this:

#if BUILDFLAG(ENABLE_PLUGINS)
  permission_contexts_[CONTENT_SETTINGS_TYPE_PLUGINS] =
      base::MakeUnique<FlashPermissionContext>(profile);
#endif

is not created, when built with:
enable_plugins = false

therefore, function:
PermissionManager::GetPermissionContext(
will return NULL
as per its line: return it == permission_contexts_.end() ? nullptr : it->second.get();

which in turn hits this function:
PermissionManager::GetPermissionStatusHelper(
which does:
PermissionContextBase* context = GetPermissionContext(permission);
PermissionResult result = context->GetPermissionStatus(
      nullptr /* render_frame_host */, requesting_origin.GetOrigin(),
      embedding_origin.GetOrigin());
BUT, context is already NULL there, but the sigsegv happens a bit later, within.

No matter, this is why the issue happens!

And there's one more which doesn't get created:
#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
  permission_contexts_[CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER] =
      base::MakeUnique<ProtectedMediaIdentifierPermissionContext>(profile);
#endif

So that would mean that, at some point anyone calling GetPermissionContext(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER) will get a NULL, and if it doesn't check for it, like GetPermissionStatusHelper does(n't), then segfault ...


workaround1
permNULLsegv_workaround.patch
2.2 KB Download
flushLOG.patch
1.3 KB Download
fix1
permNULLsegv_fix.patch
681 bytes Download
tested on:
Chromium	59.0.3066.0 (Developer Build) (64-bit)
Revision	9ae4bac8c7152820dede06e35c5099cb1ae43662-refs/heads/master@{#462799}
OS	Linux
JavaScript	V8 5.9.187
Flash	
User Agent	Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3066.0 Safari/537.36
Someone must've fixed this, if even accidentally, because I'm running:

Chromium	59.0.3068.0 (Developer Build) (64-bit)
Revision	56f79410ed4c847b056e853b5d0bae0b5e34aac1-refs/heads/master@{#463383}
OS	Linux
JavaScript	V8 5.9.202
Flash	
User Agent	Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3068.0 Safari/537.36

with my fix from Comment 16, and I cannot find any log messages on console with 'NULL' or 'NEW context' after 'View site information' a few times; which tells me this doesn't trigger anymore.

So this may issue be closed, imo.

oh wait, nevermind, I was wrong, I was using both the workaround and the fix, and I forgot that the fix(comment 16) prevents the workaround NULL/NEW logs from showing up! (and in Comment 18 I was referring to the workaround from Comment 15 not the fix from 16)

So, this wasn't fixed in 59.0.3068, it was just my fix, that's why I wasn't seeing the workaround's logs.

I should delete Comment 18, but then those who got the notification, wouldn't know why I deleted it. So here:)

Components: UI>Browser>Bubbles>PageInfo
This may have been fixed by  Issue 711004 ?
I have a feeling that it's not; I'll update and let you know...
Sorry, currently stuck figuring out how to workaround this compilation error, so it may take a while, since I've no current ideas:


ccache ../../../usr/bin/clang++ -MMD -MF obj/chrome/browser/ui/libgtkui/libgtk2ui/gtk_ui.o.d -DLIBGTKUI_IMPLEMENTATION -DV8_DEPRECATION_WARNINGS -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DDISABLE_NACL -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=\"305735-1\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DUSE_GCONF -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -DGL_GLEXT_PROTOTYPES -DUSE_GLX -DUSE_EGL -DTOOLKIT_VIEWS=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=uint16_t -DSK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS -DSK_HAS_PNG_LIBRARY -DSK_HAS_WEBP_LIBRARY -DSK_HAS_JPEG_LIBRARY -DSK_SUPPORT_GPU=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DENABLE_IPC_FUZZER -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DHAVE_PTHREAD -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src -Igen -I/usr/include/gconf/2 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/khronos -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/gpu -Igen/shim_headers/ffmpeg_shim -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gtk-unix-print-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/ced/src -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/icu/source/common -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/icu/source/i18n -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/skia/config -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/skia/ext -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/c -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/config -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/core -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/effects -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/encode -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/images -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/lazy -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/pathops -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/pdf -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/pipe -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/ports -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/utils -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/third_party/vulkan -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/include/gpu -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/src/gpu -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/skia/src/sksl -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/libwebm/source -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/protobuf/src -Igen/protoc_out -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/protobuf/src -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/boringssl/src/include -I/usr/include/nss -I/usr/include/nspr -Igen -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/WebKit -Igen/third_party/WebKit -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/v8/include -Igen/v8/include -I../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/third_party/harfbuzz-ng/src -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -fno-strict-aliasing -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fPIC -pipe -D_FORTIFY_SOURCE=2 -fomit-frame-pointer -fno-omit-frame-pointer -pthread -fcolor-diagnostics -m64 -march=x86-64 -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-user-defined-warnings -Ofast -fno-fast-math -fno-ident -fdata-sections -ffunction-sections -fomit-frame-pointer -g1 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wno-unused-function -Wno-unused-local-typedef -Wno-header-guard -std=gnu++11 -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -c ../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/chrome/browser/ui/libgtkui/gtk_ui.cc -o obj/chrome/browser/ui/libgtkui/libgtk2ui/gtk_ui.o
../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/chrome/browser/ui/libgtkui/gtk_ui.cc:320:16: error: use of undeclared identifier 'gdk_screen_get_monitor_scale_factor'; did you mean 'gdk_screen_get_monitor_at_window'?
  gint scale = gdk_screen_get_monitor_scale_factor(
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               gdk_screen_get_monitor_at_window
/usr/include/gtk-2.0/gdk/gdkscreen.h:101:15: note: 'gdk_screen_get_monitor_at_window' declared here
gint          gdk_screen_get_monitor_at_window (GdkScreen *screen,
              ^
../../../home/xftroxgpx/build/1packages/chro/4_chromium-dev-git/fetch_gclient_base/checkout_root/src/chrome/browser/ui/libgtkui/gtk_ui.cc:321:15: error: cannot initialize a parameter of type 'GdkWindow *' (aka '_GdkDrawable *') with an rvalue of type 'gint' (aka 'int')
      screen, gdk_screen_get_primary_monitor(screen));
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-2.0/gdk/gdkscreen.h:102:18: note: passing argument to parameter 'window' here
                                                GdkWindow *window);
                                                           ^
2 errors generated.

ok that compile error happens only when
use_gtk3 = false #Default = false
but not when true

basically, chromium is expecting gtk3 even when false! else, wouldn't get the above error.

gdk_screen_get_monitor_scale_factor
Since: 3.10

tested with commit 1e5352e7505feac546757f8bcdd7217b09a136a0 (HEAD, origin/master, origin/HEAD)

Compilation in progress... [22765/26060]
args.gn
99 KB Download
Finally, just finished compiling. The current issue still exists and is not fixed by  Issue 711004  !

Would've crashed if I hadn't used the workaround:

[6480:6480:0622/173131.788389:ERROR:permission_manager.cc(379)] !! GetPermissionContext is NULL(0) for ContentSettingsType=3 (see: vim ./components/content_settings/core/common/content_settings_types.h +19)

[6480:6480:0622/173131.788427:ERROR:permission_manager.cc(551)] !! GetPermissionStatusHelper (ptr) NEW context=0x3659c56b2a0


Anyway, the fix is in Comment 16
However I opt to use both workaround and fix. Attaching the current ones.

This probably won't be fixed because it only happens when compiling chromium without plugins support which nobody official does:) But hey I'm not complaining, though I wouldn't want to ever be on the chromium team(not that I will ever even qualify) because of things like this, which to be honest I think that are unavoidable esp. on such big projects: can't expect devs to test for all possible variants/cases, even though one might argue that then why provide the flag(BUILDFLAG(ENABLE_PLUGINS)) and give a false sense of choice - well, I guess with time it becomes harder to maintain and way less fun to handle all the cases... and this is how bugs creep in. /rant

Now then, where was I... ah, back to wasting that sweet sweet time!
flushLOG.patch
1.3 KB Download
permNULLsegv_fix.patch
670 bytes Download
permNULLsegv_workaround.patch
2.2 KB Download
Status: WontFix (was: Unconfirmed)
I'm going to close this as WontFix; we don't usually use this tracker to track issues in custom Chromium builds. If you can reproduce a bug or crash in Chrome itself, we'd definitely be interested in tracking that. Thanks!

Sign in to add a comment