Download raw body.
Is chromium-149.0.7827.196 crashing for you guys?
Hi.
Vinted is still crashing Chromium for me. Would it be possible to
bring in changes to mitigate the problem?
On Sun, Jul 12, 2026 at 06:18:36PM +0100, Fabien Romano wrote:
> I have enabled serial and returned an empty devices list.
> I have tested in electron (make test only).
>
> patch-services_device_BUILD_gn
> patch-services_device_serial_BUILD_gn
> patch-services_device_serial_serial_device_enumerator_cc
> patch-services_device_serial_serial_port_manager_impl_cc
>
> I also look how we could disable the feature.
> https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/RuntimeEnabledFeatures.md
>
> I didn't test this one, it could work.
>
> patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5
>
> I'm going to test both in chromium.
>
> On 7/10/26 18:28, Fabien Romano wrote:
> >
> >
> > On 7/10/26 13:25, Kirill A. Korinsky wrote:
> >> On Fri, 10 Jul 2026 10:37:45 +0200,
> >> Fabien Romano <fabienromano@gmail.com> wrote:
> >>>
> >>>
> >>> An AI found the crash is related to a web serial.
> >>>
> >>> I have no idea why it randomly fails on my side.
> >>> But yes, after trying a few times, I also get the crash.
> >>>
> >>> Crash:
> >>> rm -rf /tmp/chrome-vinted-serial && \
> >>> /usr/local/bin/chrome \
> >>> --user-data-dir=/tmp/chrome-vinted-serial \
> >>> --no-first-run \
> >>> https://www.vinted.com/
> >>>
> >>> No crash:
> >>> rm -rf /tmp/chrome-vinted-noserial && \
> >>> /usr/local/bin/chrome \
> >>> --user-data-dir=/tmp/chrome-vinted-noserial \
> >>> --no-first-run \
> >>> --disable-blink-features=Serial \
> >>> --disable-features=WebSerialAPI \
> >>> https://www.vinted.com/
> >>>
> >>> From my first test, --disable-blink-features=Serial is enough.
> >>>
> >>> Please test those flags and confirm it fixes your issue.
> >>>
> >>> I also get this crash while looking for WASM stuff online.
> >>> https://patrickelectric.work/mavlink2rest-wasm/
> >>>
> >>> This one crashes all the time as it explicitly tests the serial.
> >>>
> >>> rm -rf /tmp/chrome-serial && \
> >>> /usr/local/bin/chrome \
> >>> --user-data-dir=/tmp/chrome-serial \
> >>> --no-first-run \
> >>> https://patrickelectric.work/mavlink2rest-wasm/
> >>>
> >>> Also, I do not understand why, but --js-flags=--jitless prevents the crash.
> >>> I guess this is specific to this test.
> >>>
> >>> The below diff isn't enough, but it show where to look.
> >>> Next we have to handle the failure and return / close properly.
> >>> Otherwise tests fail on a timeout, which sounds not correct.
> >>>
> >>> Except if someone wants to implement serial ...
>
> >>
> >> Am I reading it right: a some random website tries to use Web Serial API and
> >> because it is not implemented, it literally crashed the web browser?
> >
> > Yes, exactly.
> >
> > https://chromium.googlesource.com/chromium/src/+/HEAD/styleguide/c++/checks.md
> >
> > CHECK(), DCHECK() and NOTREACHED() are all used to ensure that invariants hold.
> > They document (and verify) programmer expectations that either some statement
> > always holds true at the point of (D)CHECKing or that a piece of code is
> > unreachable (for NOTREACHED). CHECK failures and reachable NOTREACHEDs result in
> > an application crash (generating a crash report).
> >
> > I don't remember when they switched NOTREACHED() to be fatal (recently, I think).
> > If you try to use BindSerialPortManager on OpenBSD, you crash.
> >
> >>
> >> Anyway, I had added robert@ in case if he missed it.
> >>
> >
>
> --
> Fabien Romano
>
> Index: Makefile
> ===================================================================
> RCS file: /mnt/ext/cvs/ports/www/chromium/Makefile,v
> diff -u -p -r1.917 Makefile
> --- Makefile 10 Jul 2026 07:47:01 -0000 1.917
> +++ Makefile 12 Jul 2026 16:41:29 -0000
> @@ -13,6 +13,7 @@ DPB_PROPERTIES+= lonesome
> COMMENT= Chromium browser
>
> V= 150.0.7871.114
> +REVISION= 0
>
> DISTNAME= chromium-${V}
>
> Index: patches/patch-services_device_BUILD_gn
> ===================================================================
> RCS file: /mnt/ext/cvs/ports/www/chromium/patches/patch-services_device_BUILD_gn,v
> diff -u -p -r1.7 patch-services_device_BUILD_gn
> --- patches/patch-services_device_BUILD_gn 31 May 2025 05:14:03 -0000 1.7
> +++ patches/patch-services_device_BUILD_gn 12 Jul 2026 16:36:22 -0000
> @@ -6,7 +6,7 @@ Index: services/device/BUILD.gn
>
> is_serial_enabled_platform =
> - is_win || ((is_linux || is_chromeos) && use_udev) || is_mac || is_android
> -+ is_win || ((!is_bsd && is_linux || is_chromeos) && use_udev) || is_mac || is_android
> ++ is_win || ((!is_bsd && is_linux || is_chromeos) && use_udev) || is_mac || is_android || is_openbsd
>
> source_set("lib") {
> # This should be visible only to embedders of the Device Service, and the
> Index: patches/patch-services_device_serial_BUILD_gn
> ===================================================================
> RCS file: /mnt/ext/cvs/ports/www/chromium/patches/patch-services_device_serial_BUILD_gn,v
> diff -u -p -r1.12 patch-services_device_serial_BUILD_gn
> --- patches/patch-services_device_serial_BUILD_gn 13 Mar 2026 12:50:17 -0000 1.12
> +++ patches/patch-services_device_serial_BUILD_gn 12 Jul 2026 16:36:22 -0000
> @@ -6,7 +6,7 @@ Index: services/device/serial/BUILD.gn
> }
>
> -if (is_win || ((is_linux || is_chromeos) && use_udev) || is_mac || is_android) {
> -+if (is_win || ((!is_bsd && is_linux || is_chromeos) && use_udev) || is_mac || is_android) {
> ++if (is_win || ((!is_bsd && is_linux || is_chromeos) && use_udev) || is_mac || is_android || is_openbsd) {
> config("platform_support") {
> visibility = [ ":serial" ]
> if (is_win) {
> Index: patches/patch-services_device_serial_serial_device_enumerator_cc
> ===================================================================
> RCS file: /mnt/ext/cvs/ports/www/chromium/patches/patch-services_device_serial_serial_device_enumerator_cc,v
> diff -u -p -r1.11 patch-services_device_serial_serial_device_enumerator_cc
> --- patches/patch-services_device_serial_serial_device_enumerator_cc 2 Jul 2025 12:47:40 -0000 1.11
> +++ patches/patch-services_device_serial_serial_device_enumerator_cc 12 Jul 2026 16:39:22 -0000
> @@ -1,21 +1,27 @@
> +un-break build, NOTREACHED()
> +
> Index: services/device/serial/serial_device_enumerator.cc
> --- services/device/serial/serial_device_enumerator.cc.orig
> +++ services/device/serial/serial_device_enumerator.cc
> -@@ -12,7 +12,7 @@
> +@@ -12,7 +12,9 @@
> #include "build/build_config.h"
> #include "components/device_event_log/device_event_log.h"
>
> -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
> -+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
> ++#if BUILDFLAG(IS_OPENBSD)
> ++// none
> ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
> #include "services/device/serial/serial_device_enumerator_linux.h"
> #elif BUILDFLAG(IS_MAC)
> #include "services/device/serial/serial_device_enumerator_mac.h"
> -@@ -27,7 +27,7 @@ namespace device {
> +@@ -27,7 +29,9 @@ namespace device {
> // static
> std::unique_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create(
> scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
> -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
> -+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
> ++#if BUILDFLAG(IS_OPENBSD)
> ++ NOTREACHED() << "SerialDeviceEnumerator not supported on this platform.";
> ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
> return SerialDeviceEnumeratorLinux::Create();
> #elif BUILDFLAG(IS_MAC)
> return std::make_unique<SerialDeviceEnumeratorMac>();
> Index: patches/patch-services_device_serial_serial_port_manager_impl_cc
> ===================================================================
> RCS file: patches/patch-services_device_serial_serial_port_manager_impl_cc
> diff -N patches/patch-services_device_serial_serial_port_manager_impl_cc
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-services_device_serial_serial_port_manager_impl_cc 12 Jul 2026 16:40:20 -0000
> @@ -0,0 +1,39 @@
> +Return empty devices list and fallback on mojo::NullRemote().
> +
> +Index: services/device/serial/serial_port_manager_impl.cc
> +--- services/device/serial/serial_port_manager_impl.cc.orig
> ++++ services/device/serial/serial_port_manager_impl.cc
> +@@ -85,6 +85,9 @@ void SerialPortManagerImpl::SetClient(
> + void SerialPortManagerImpl::GetDevices(bool allow_bluetooth_system_prompt,
> + GetDevicesCallback callback) {
> + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
> ++#if BUILDFLAG(IS_OPENBSD)
> ++ std::move(callback).Run({});
> ++#else
> + if (!enumerator_) {
> + enumerator_ = SerialDeviceEnumerator::Create(ui_task_runner_);
> + observed_enumerator_.AddObservation(enumerator_.get());
> +@@ -107,6 +110,7 @@ void SerialPortManagerImpl::GetDevices(bool allow_blue
> + }
> + bluetooth_enumerator_->GetDevicesAfterInitialEnumeration(base::BindOnce(
> + &FinishGetDevices, std::move(callback), std::move(devices)));
> ++#endif
> + }
> +
> + void SerialPortManagerImpl::OpenPort(
> +@@ -117,6 +121,7 @@ void SerialPortManagerImpl::OpenPort(
> + mojo::PendingRemote<mojom::SerialPortConnectionWatcher> watcher,
> + OpenPortCallback callback) {
> + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
> ++#if !BUILDFLAG(IS_OPENBSD)
> + if (!enumerator_) {
> + enumerator_ = SerialDeviceEnumerator::Create(ui_task_runner_);
> + observed_enumerator_.AddObservation(enumerator_.get());
> +@@ -156,6 +161,7 @@ void SerialPortManagerImpl::OpenPort(
> + base::SequencedTaskRunner::GetCurrentDefault())));
> + return;
> + }
> ++#endif
> +
> + std::move(callback).Run(mojo::NullRemote());
> + }
> Index: patches/patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5
> ===================================================================
> RCS file: patches/patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5
> diff -N patches/patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5 12 Jul 2026 17:07:26 -0000
> @@ -0,0 +1,20 @@
> +Change Serial feature status from stable to test.
> +Serial will only be available with --run-web-tests, --enable-blink-test-features.
> +
> +Index: third_party/blink/renderer/platform/runtime_enabled_features.override.json5
> +--- third_party/blink/renderer/platform/runtime_enabled_features.override.json5.orig
> ++++ third_party/blink/renderer/platform/runtime_enabled_features.override.json5
> +@@ -45,6 +45,10 @@
> + // ]
> +
> + data: [
> +- // Entries go here.
> ++ {
> ++ name: "Serial",
> ++ status: "test",
> ++ base_feature: "WebSerialAPI",
> ++ },
> + ]
> +-}
> +\ No newline at end of file
> ++}
> Index: Makefile
> ===================================================================
> RCS file: /mnt/ext/cvs/ports/www/chromium/Makefile,v
> diff -u -p -r1.917 Makefile
> --- Makefile 10 Jul 2026 07:47:01 -0000 1.917
> +++ Makefile 12 Jul 2026 16:41:29 -0000
> @@ -13,6 +13,7 @@ DPB_PROPERTIES+= lonesome
> COMMENT= Chromium browser
>
> V= 150.0.7871.114
> +REVISION= 0
>
> DISTNAME= chromium-${V}
>
> Index: patches/patch-services_device_BUILD_gn
> ===================================================================
> RCS file: /mnt/ext/cvs/ports/www/chromium/patches/patch-services_device_BUILD_gn,v
> diff -u -p -r1.7 patch-services_device_BUILD_gn
> --- patches/patch-services_device_BUILD_gn 31 May 2025 05:14:03 -0000 1.7
> +++ patches/patch-services_device_BUILD_gn 12 Jul 2026 16:36:22 -0000
> @@ -6,7 +6,7 @@ Index: services/device/BUILD.gn
>
> is_serial_enabled_platform =
> - is_win || ((is_linux || is_chromeos) && use_udev) || is_mac || is_android
> -+ is_win || ((!is_bsd && is_linux || is_chromeos) && use_udev) || is_mac || is_android
> ++ is_win || ((!is_bsd && is_linux || is_chromeos) && use_udev) || is_mac || is_android || is_openbsd
>
> source_set("lib") {
> # This should be visible only to embedders of the Device Service, and the
> Index: patches/patch-services_device_serial_BUILD_gn
> ===================================================================
> RCS file: /mnt/ext/cvs/ports/www/chromium/patches/patch-services_device_serial_BUILD_gn,v
> diff -u -p -r1.12 patch-services_device_serial_BUILD_gn
> --- patches/patch-services_device_serial_BUILD_gn 13 Mar 2026 12:50:17 -0000 1.12
> +++ patches/patch-services_device_serial_BUILD_gn 12 Jul 2026 16:36:22 -0000
> @@ -6,7 +6,7 @@ Index: services/device/serial/BUILD.gn
> }
>
> -if (is_win || ((is_linux || is_chromeos) && use_udev) || is_mac || is_android) {
> -+if (is_win || ((!is_bsd && is_linux || is_chromeos) && use_udev) || is_mac || is_android) {
> ++if (is_win || ((!is_bsd && is_linux || is_chromeos) && use_udev) || is_mac || is_android || is_openbsd) {
> config("platform_support") {
> visibility = [ ":serial" ]
> if (is_win) {
> Index: patches/patch-services_device_serial_serial_device_enumerator_cc
> ===================================================================
> RCS file: /mnt/ext/cvs/ports/www/chromium/patches/patch-services_device_serial_serial_device_enumerator_cc,v
> diff -u -p -r1.11 patch-services_device_serial_serial_device_enumerator_cc
> --- patches/patch-services_device_serial_serial_device_enumerator_cc 2 Jul 2025 12:47:40 -0000 1.11
> +++ patches/patch-services_device_serial_serial_device_enumerator_cc 12 Jul 2026 16:39:22 -0000
> @@ -1,21 +1,27 @@
> +un-break build, NOTREACHED()
> +
> Index: services/device/serial/serial_device_enumerator.cc
> --- services/device/serial/serial_device_enumerator.cc.orig
> +++ services/device/serial/serial_device_enumerator.cc
> -@@ -12,7 +12,7 @@
> +@@ -12,7 +12,9 @@
> #include "build/build_config.h"
> #include "components/device_event_log/device_event_log.h"
>
> -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
> -+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
> ++#if BUILDFLAG(IS_OPENBSD)
> ++// none
> ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
> #include "services/device/serial/serial_device_enumerator_linux.h"
> #elif BUILDFLAG(IS_MAC)
> #include "services/device/serial/serial_device_enumerator_mac.h"
> -@@ -27,7 +27,7 @@ namespace device {
> +@@ -27,7 +29,9 @@ namespace device {
> // static
> std::unique_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create(
> scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
> -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
> -+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
> ++#if BUILDFLAG(IS_OPENBSD)
> ++ NOTREACHED() << "SerialDeviceEnumerator not supported on this platform.";
> ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
> return SerialDeviceEnumeratorLinux::Create();
> #elif BUILDFLAG(IS_MAC)
> return std::make_unique<SerialDeviceEnumeratorMac>();
> Index: patches/patch-services_device_serial_serial_port_manager_impl_cc
> ===================================================================
> RCS file: patches/patch-services_device_serial_serial_port_manager_impl_cc
> diff -N patches/patch-services_device_serial_serial_port_manager_impl_cc
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-services_device_serial_serial_port_manager_impl_cc 12 Jul 2026 16:40:20 -0000
> @@ -0,0 +1,39 @@
> +Return empty devices list and fallback on mojo::NullRemote().
> +
> +Index: services/device/serial/serial_port_manager_impl.cc
> +--- services/device/serial/serial_port_manager_impl.cc.orig
> ++++ services/device/serial/serial_port_manager_impl.cc
> +@@ -85,6 +85,9 @@ void SerialPortManagerImpl::SetClient(
> + void SerialPortManagerImpl::GetDevices(bool allow_bluetooth_system_prompt,
> + GetDevicesCallback callback) {
> + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
> ++#if BUILDFLAG(IS_OPENBSD)
> ++ std::move(callback).Run({});
> ++#else
> + if (!enumerator_) {
> + enumerator_ = SerialDeviceEnumerator::Create(ui_task_runner_);
> + observed_enumerator_.AddObservation(enumerator_.get());
> +@@ -107,6 +110,7 @@ void SerialPortManagerImpl::GetDevices(bool allow_blue
> + }
> + bluetooth_enumerator_->GetDevicesAfterInitialEnumeration(base::BindOnce(
> + &FinishGetDevices, std::move(callback), std::move(devices)));
> ++#endif
> + }
> +
> + void SerialPortManagerImpl::OpenPort(
> +@@ -117,6 +121,7 @@ void SerialPortManagerImpl::OpenPort(
> + mojo::PendingRemote<mojom::SerialPortConnectionWatcher> watcher,
> + OpenPortCallback callback) {
> + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
> ++#if !BUILDFLAG(IS_OPENBSD)
> + if (!enumerator_) {
> + enumerator_ = SerialDeviceEnumerator::Create(ui_task_runner_);
> + observed_enumerator_.AddObservation(enumerator_.get());
> +@@ -156,6 +161,7 @@ void SerialPortManagerImpl::OpenPort(
> + base::SequencedTaskRunner::GetCurrentDefault())));
> + return;
> + }
> ++#endif
> +
> + std::move(callback).Run(mojo::NullRemote());
> + }
> Index: patches/patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5
> ===================================================================
> RCS file: patches/patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5
> diff -N patches/patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-third_party_blink_renderer_platform_runtime_enabled_features_override_json5 12 Jul 2026 17:07:26 -0000
> @@ -0,0 +1,20 @@
> +Change Serial feature status from stable to test.
> +Serial will only be available with --run-web-tests, --enable-blink-test-features.
> +
> +Index: third_party/blink/renderer/platform/runtime_enabled_features.override.json5
> +--- third_party/blink/renderer/platform/runtime_enabled_features.override.json5.orig
> ++++ third_party/blink/renderer/platform/runtime_enabled_features.override.json5
> +@@ -45,6 +45,10 @@
> + // ]
> +
> + data: [
> +- // Entries go here.
> ++ {
> ++ name: "Serial",
> ++ status: "test",
> ++ base_feature: "WebSerialAPI",
> ++ },
> + ]
> +-}
> +\ No newline at end of file
> ++}
--
Regards,
Mikolaj
Is chromium-149.0.7827.196 crashing for you guys?