Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 804151

Summary: www-client/chromium-92.0.4515.107: crashpad component does not honor --user-data-dir option
Product: Gentoo Linux Reporter: Alexander Sergeyev <sergeev917>
Component: Current packagesAssignee: Chromium Project <chromium>
Status: RESOLVED INVALID    
Severity: normal    
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Alexander Sergeyev 2021-07-25 14:08:30 UTC
I'm using multiple chromium profiles which are nicely selected by supplying --user-data-dir flag to the chromium command line. After upgrading from v91.0.4472.114 to v92.0.4515.107 I'm getting the following errors:

# chromium --user-data-dir=/home/foo/.config/chromium-bar
crashpad_handler: --database is required
Try 'crashpad_handler --help' for more information.

After digging into it, I've discovered that chromium stumbles on ~/.config/chromium being a broken symlink to /dev/null/chromium. This is an intentional guard against chromium not honoring --user-data-dir.

After removal of ~/.config/chromium symlink, chromium starts up fine and pulls data from the supplied user directory, but prepares crash reports in the default ~/.config/chromium directory, thus ignoring --user-data-dir option:

$ tree .config/chromium
.config/chromium
└── Crash Reports
    ├── attachments
    ├── completed
    ├── new
    ├── pending
    └── settings.dat

This seems to be a regression from v91.0.4472.114, which creates crash reports directories in the profile directory supplied by --user-data-dir option.

Reproducible: Always

Steps to Reproduce:
1. Build and install chromium-92.0.4515.107
2. Remove ~/.config/chromium (warning: depending on your setup, this might remove chromium profile data)
3. Start chromium with --user-data-dir=$HOME/.config/chromium-test
Actual Results:  
$HOME/.config/chromium is created with "Crash Reports" subdirectory in it.

Expected Results:  
$HOME/.config/chromium should not have been created and populated.

Chromium version with use flags:

www-client/chromium-92.0.4515.107 cups custom-cflags pic proprietary-codecs vaapi -component-build -hangouts -headless -js-type-check -kerberos -official -pulseaudio -screencast -selinux -suid -system-ffmpeg -system-icu -wayland -widevine CPU_FLAGS_ARM="-neon" KERNEL="linux"


Emerge --info:

Portage 3.0.20 (python 3.9.6-final-0, default/linux/amd64/17.1/no-multilib, gcc-10.3.0, glibc-2.33-r3, 5.12.15-gentoo x86_64)
=================================================================
System uname: Linux-5.12.15-gentoo-x86_64-with-glibc2.33
KiB Mem:    32752740 total,  11798984 free
KiB Swap:          0 total,         0 free
sh bash 5.1_p8
ld GNU ld (Gentoo 2.36.1 p3) 2.36.1
app-shells/bash:          5.1_p8::gentoo
dev-lang/perl:            5.34.0-r1::gentoo
dev-lang/python:          2.7.18_p11::gentoo, 3.9.6::gentoo
dev-lang/rust:            1.53.0::gentoo
dev-util/cmake:           3.21.0::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.7-r3::gentoo
sys-apps/openrc:          0.42.1-r1::gentoo
sys-apps/sandbox:         2.24::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r5::gentoo
sys-devel/automake:       1.15.1-r2::gentoo, 1.16.3-r1::gentoo
sys-devel/binutils:       2.36.1-r1::gentoo
sys-devel/gcc:            10.3.0-r2::gentoo, 11.1.0-r2::gentoo
sys-devel/gcc-config:     2.4::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.12::gentoo (virtual/os-headers)
sys-libs/glibc:           2.33-r3::gentoo

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=native -m64 -ggdb2"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe -march=native -m64 -ggdb2"
DISTDIR="/var/cache/portage-distfiles"
EMERGE_DEFAULT_OPTS="--nospinner --backtrack=4000 --verbose-conflicts --tree --unordered-display --changed-deps-report --with-bdeps=y"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance cgroup collision-protect config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms splitdebug strict suidctl unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
INSTALL_MASK="/usr/lib64/firefox/gmp-clearkey /etc/systemd /usr/lib/systemd /usr/share/man/!(man*) /etc/cups"
LANG="en_US.UTF-8"
LC_ALL=""
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS=""
MAKEOPTS="-j5"
PKGDIR="/var/lib/portage-packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_TMPDIR="/var/tmp"
RUSTFLAGS="-C target-cpu=native -C debuginfo=1"
USE="amd64 libglvnd split-usr" ABI_X86="64" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 ssse3" CURL_SSL="openssl" ELIBC="glibc" INPUT_DEVICES="evdev keyboard mouse synaptics" KERNEL="linux" LLVM_TARGETS="X86" LUA_SINGLE_TARGET="luajit" PYTHON_SINGLE_TARGET="python3_9" PYTHON_TARGETS="python3_9" USERLAND="GNU" VIDEO_CARDS="intel"
Unset:  CC, CPPFLAGS, CTARGET, CXX, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Stephan Hartmann gentoo-dev 2021-07-25 14:56:30 UTC
Can you try to set a path with --breakpad-dump-location?
Comment 2 Stephan Hartmann gentoo-dev 2021-07-25 15:21:28 UTC
Tested myself and --breakpad-dump-location creates crash reports at specified location. Previously we did not install crashpad_handler binary and therefore crash reports were not generated.
Comment 3 Alexander Sergeyev 2021-07-25 16:43:01 UTC
(In reply to Stephan Hartmann from comment #2)
> Tested myself and --breakpad-dump-location creates crash reports at
> specified location. Previously we did not install crashpad_handler binary
> and therefore crash reports were not generated.

That was not particularly obvious, thank you! I've tried both --disable-breakpad and --disable-crash-reporter with no effect.

Due to chromium-92.0.4515.107/third_party/crashpad/crashpad/doc/overview_design.md:

Crashpad may capture arbitrary contents from crashed process’ memory, including
user IDs and passwords, credit card information, URLs and whatever other content
users have trusted the crashing program with.

maybe you can also recommend an option to disable crashpad? Simply removing the crashpad binary or replacing it with a no-op script does not work.
Comment 4 Larry the Git Cow gentoo-dev 2021-08-03 21:08:21 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=821e8d8d6541091f7082d623761b9192ce085b35

commit 821e8d8d6541091f7082d623761b9192ce085b35
Author:     Stephan Hartmann <sultan@gentoo.org>
AuthorDate: 2021-08-03 21:07:22 +0000
Commit:     Stephan Hartmann <sultan@gentoo.org>
CommitDate: 2021-08-03 21:08:13 +0000

    www-client/chromium: stable channel bump to 92.0.4515.131
    
    Bug: https://bugs.gentoo.org/804151
    Bug: https://bugs.gentoo.org/806223
    Package-Manager: Portage-3.0.20, Repoman-3.0.2
    Signed-off-by: Stephan Hartmann <sultan@gentoo.org>

 www-client/chromium/Manifest                       |   1 +
 www-client/chromium/chromium-92.0.4515.131.ebuild  | 956 +++++++++++++++++++++
 .../files/chromium-92-crashpad-consent.patch       |  46 +
 3 files changed, 1003 insertions(+)