-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.9.3, 6.10.0, 6.11
-
None
-
iPhone 13 Pro
iOS 18.6.2
Trying to run the qtwebengine/examples/pdfwidgets/pdfviewer example on a real iOS device fails with latest official binaries of Qt 6.9.3, Qt 6.10.0, and self built 6.10 branch.
Haven't tried with dev.
It works with official Qt 6.8.4 binaries.
It fails with both Debug and Release.
It doesn't fail when launching on the simulator (tested with Qt 6.10.0, 6.9.3, and self-built 6.10).
So only on a real device.
Configure with
../qt/bin/qt-cmake ../../../worktrees/6.10/qtwebengine/examples/pdfwidgets/pdfviewer/ open pdfviewer.xcodeproj
Then press run in Xcode to run it on a connected device.
Stdout:
[FATAL:partition_address_space.cc(79)] Check failed: false.
#00 0x104b75a38 (pdfviewerwidgets+0x8c1a38)
#01 0x104b7448c (pdfviewerwidgets+0x8c048c)
#02 0x104b74268 (pdfviewerwidgets+0x8c0268)
#03 0x104b7a3b0 (pdfviewerwidgets+0x8c63b0)
#04 0x104b79b10 (pdfviewerwidgets+0x8c5b10)
#05 0x104b80518 (pdfviewerwidgets+0x8cc518)
#06 0x104b7a444 (pdfviewerwidgets+0x8c6444)
#07 0x104b6d1a8 (pdfviewerwidgets+0x8b91a8)
#08 0x104b6d0e4 (pdfviewerwidgets+0x8b90e4)
#09 0x104b6cffc (pdfviewerwidgets+0x8b8ffc)
#10 0x104b6cf28 (pdfviewerwidgets+0x8b8f28)
#11 0x104b6cef0 (pdfviewerwidgets+0x8b8ef0)
#12 0x104ef231c (pdfviewerwidgets+0xc3e31c)
#13 0x104ef22ec (pdfviewerwidgets+0xc3e2ec)
#14 0x104f17f74 (pdfviewerwidgets+0xc63f74)
#15 0x104f183b8 (pdfviewerwidgets+0xc643b8)
#16 0x104f1a44c (pdfviewerwidgets+0xc6644c)
#17 0x104f1a4dc (pdfviewerwidgets+0xc664dc)
#18 0x1042bf0ac (pdfviewerwidgets+0xb0ac)
#19 0x1042c3744 (pdfviewerwidgets+0xf744)
#20 0x1042be798 (pdfviewerwidgets+0xa798)
#21 0x104309398 (pdfviewerwidgets+0x55398)
#22 0x104308ef4 (pdfviewerwidgets+0x54ef4)
Stack trace:
#0 0x0000000105f136d4 in partition_alloc::internal::logging::LogMessage::~LogMessage() (.cold.1) ()
#1 0x0000000104b744e8 in absl::log_internal::LogMessage::OstreamView::OstreamView ()
#2 0x0000000104b74268 in partition_alloc::internal::logging::CheckError::~CheckError at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/check.cc:74
#3 0x0000000104b7a3b0 in partition_alloc::internal::(anonymous namespace)::HandlePoolAllocFailure [inlined] partition_alloc::internal::logging::check_error::Check::~Check() [inlined] at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/check.h:116
#4 0x0000000104b7a3a8 in partition_alloc::internal::(anonymous namespace)::HandlePoolAllocFailure [inlined] partition_alloc::internal::logging::check_error::Check::~Check() [inlined] at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/check.h:116
#5 0x0000000104b7a3a8 in partition_alloc::internal::(anonymous namespace)::HandlePoolAllocFailure at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_address_space.cc:79
#6 0x0000000104b79b10 in partition_alloc::internal::PartitionAddressSpace::Init at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_address_space.cc:181
#7 0x0000000104b80518 in partition_alloc::PartitionRoot::Init at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc:1136
#8 0x0000000104b7a444 in partition_alloc::PartitionAllocator::init at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc.cc:120
#9 0x0000000104b6d1a8 in partition_alloc::PartitionAllocator::PartitionAllocator at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc.h:53
#10 0x0000000104b6d0e4 in partition_alloc::PartitionAllocator::PartitionAllocator at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/src/partition_alloc/partition_alloc.h:53
#11 0x0000000104b6cffc in (anonymous namespace)::Allocators::Allocators at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/third_party/pdfium/core/fxcrt/fx_memory_pa.cpp:24
#12 0x0000000104b6cf28 in (anonymous namespace)::Allocators::Allocators at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/third_party/pdfium/core/fxcrt/fx_memory_pa.cpp:22
#13 0x0000000104b6cef0 in FX_InitializeMemoryAllocators at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/third_party/pdfium/core/fxcrt/fx_memory_pa.cpp:132
#14 0x0000000104ef231c in ::FPDF_InitLibraryWithConfig(const FPDF_LIBRARY_CONFIG *) at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdf_view.cpp:233
#15 0x0000000104ef22ec in ::FPDF_InitLibrary() at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/fpdf_view.cpp:225
#16 0x0000000104f17f74 in QPdfDocumentPrivate::QPdfDocumentPrivate at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/pdf/qpdfdocument.cpp:123
#17 0x0000000104f183b8 in QPdfDocumentPrivate::QPdfDocumentPrivate at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/pdf/qpdfdocument.cpp:114
#18 0x0000000104f1a44c in QPdfDocument::QPdfDocument at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/pdf/qpdfdocument.cpp:572
#19 0x0000000104f1a4dc in QPdfDocument::QPdfDocument at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/src/pdf/qpdfdocument.cpp:573
#20 0x00000001042bf0ac in MainWindow::MainWindow at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/examples/pdfwidgets/pdfviewer/mainwindow.cpp:39
#21 0x00000001042c3744 in MainWindow::MainWindow at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/examples/pdfwidgets/pdfviewer/mainwindow.cpp:40
#22 0x00000001042be798 in main at /Users/alex/Dev/qt/worktrees/6.10/qtwebengine/examples/pdfwidgets/pdfviewer/main.cpp:23
#23 0x0000000104309398 in user_main_trampoline at /Users/alex/Dev/qt/worktrees/6.10/qtbase/src/plugins/platforms/ios/qioseventdispatcher.mm:294
#24 0x0000000104308ef4 in +[QIOSApplicationStateTracker applicationDidFinishLaunching:] at /Users/alex/Dev/qt/worktrees/6.10/qtbase/src/plugins/platforms/ios/qioseventdispatcher.mm:396
#25 0x000000019288af80 in __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ ()
#26 0x000000019288dfb0 in ___CFXRegistrationPost_block_invoke ()
#27 0x000000019288def4 in _CFXRegistrationPost ()
#28 0x000000019288ba4c in _CFXNotificationPost ()
#29 0x00000001915017ac in -[NSNotificationCenter postNotificationName:object:userInfo:] ()
#30 0x00000001952ada70 in -[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] ()
#31 0x00000001952a9908 in -[UIApplication _runWithMainScene:transitionContext:completion:] ()
#32 0x00000001952a94a0 in -[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] ()
#33 0x000000019537aefc in -[UIApplication _compellApplicationLaunchToCompleteUnconditionally] ()
#34 0x00000001952a9250 in -[UIApplication _run] ()
#35 0x0000000195274a28 in UIApplicationMain ()
#36 0x000000010430838c in qt_main_wrapper at /Users/alex/Dev/qt/worktrees/6.10/qtbase/src/plugins/platforms/ios/qioseventdispatcher.mm:260
#37 0x00000001b9319f08 in start ()
Surrounding code that failed:
void PartitionAddressSpace::Init() {
if (IsInitialized()) {
return;
}
const size_t core_pool_size = CorePoolSize();
size_t glued_pool_sizes = core_pool_size * 2;
// Note, BRP pool requires to be preceded by a "forbidden zone", which is
// conveniently taken care of by the last guard page of the regular pool.
setup_.regular_pool_base_address_ =
AllocPages(glued_pool_sizes, glued_pool_sizes,
PageAccessibilityConfiguration(
PageAccessibilityConfiguration::kInaccessible),
PageTag::kPartitionAlloc);
#if PA_BUILDFLAG(IS_ANDROID)
// On Android, Adreno-GSL library fails to mmap if we snatch address
// 0x400000000. Find a different address instead.
if (setup_.regular_pool_base_address_ == 0x400000000) {
uintptr_t new_base_address =
AllocPages(glued_pool_sizes, glued_pool_sizes,
PageAccessibilityConfiguration(
PageAccessibilityConfiguration::kInaccessible),
PageTag::kPartitionAlloc);
FreePages(setup_.regular_pool_base_address_, glued_pool_sizes);
setup_.regular_pool_base_address_ = new_base_address;
}
#endif // PA_BUILDFLAG(IS_ANDROID)
if (!setup_.regular_pool_base_address_) {
HandlePoolAllocFailure(); <--------------------------------
}