#992164 calamares: Creating a new blank partition table GPT/UEFI results in failure

Package:
calamares
Source:
calamares
Description:
distribution-independent installer framework
Submitter:
liz
Date:
2022-06-16 18:45:02 UTC
Severity:
important
#992164#5
Date:
2021-08-14 15:45:00 UTC
From:
To:
Dear Maintainer,

I was testing Debian 11 Bullseye on a Thinkpad T530 with UEFI/GPT and LVM. When the new volume group was being created, the error 'Create a new partition table (type gpt_ on '/dev/debian-vg') is shown. Once this is closed, calamares installer closes and results in failure.

#992164#10
Date:
2021-08-14 16:50:47 UTC
From:
To:
I'm seeing a similar problem here, but I think the problem is deeper.

Starting in BIOS mode on a kde i386 live image. The existing disk on
my test system has an LVM setup on it. I've told calamares to wipe the
whole disk and do a fresh installation, but it looks like the code to
work out the existing disks has got confused and it thinks that the
whole disk is /dev/debian-vg rather than /dev/sda. Three attachments
here:

 * partitions.txt is the output of "fdisk -l" at the start
 * Screenshot_20210814_174257.png shows calamares just before I hit
   "Install"
 * Screenshot_20210814_174916.png shows the error message

#992164#15
Date:
2021-08-14 16:58:55 UTC
From:
To:
calamares and now it's working fine.
#992164#20
Date:
2021-10-28 18:11:39 UTC
From:
To:
Just a ping to the BTS to avoid auto-rm, I'll file this bug with
upstream soon.

#992164#25
Date:
2021-11-30 14:22:42 UTC
From:
To:
Upstream maintainer here. Thanks Steve McIntyre for useful screenshots and
fdisk output. It's given me something to work with. (Mostly, I manage to crash
the installer with a segfault while trying to set up something like your disk)

The Calamares version in Debian is 3.2.36. That's from february. Upstream has
a 2-week release cycle which doesn't mesh really well with Debian. Calamares
3.2.45 (from early november) had a bunch of LVM-related fixes, and the
changelog mentions many other things related to partitioning in the meantime.

What I do:
- boot VM in BIOS mode
- dd 64MB of zeros to my (virtual) disk
- start the installer
- click through to the partitioning page
- create a new partition table, MBR.
- create a partition on the disk, primary partition, LVM PV as type, whole
disk. OK that dialog.
- click "New Volume Group" button, check the box for the new PV, give it a
label, click OK.
- installer vanishes without a trace, segmentation fault.

This still happens -- well, there's an ASSERT triggered instead -- on the
latest Calamares, so while I can't reproduce the specific issue, I can find
other things that need work (in a general sense "all the LVM functionality",
which only works well in an unfortunately-narrow set of circumstances).

Feel free to file an upstream issue (Jonathan Carter pinged me on IRC to point
me at this downstream one) with specific steps to reproduce the issues you've
been having, though.

[ade]

#992164#30
Date:
2021-11-30 15:55:16 UTC
From:
To:
Hi Adriaan

The latest calamares version in Debian unstable is 3.2.44, although at
the time this bug was filed, the same issue could be reproduced with the
latest upstream version. I'll upload 3.2.45 soon and check again, my
guess is that I'll have the same result as you.

thanks for following up!

#992164#39
Date:
2022-06-15 21:58:28 UTC
From:
To:
I have tried to get some symbols before.
Launched with:
# gdb -batch -n -ex 'set pagination off' -ex run -ex bt -ex 'bt full' -ex 'thread apply all bt full' --args calamares -d 1> normal.txt 2>errs.txt

user@debian:~$ apt list --installed | grep calamares

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

calamares-settings-debian/stable,now 11.0.5-2 all [installed,automatic]
calamares/stable,now 3.2.36-1 i386 [installed,automatic]
user@debian:~$


Thread 1 (Thread 0xb20307c0 (LWP 19575) "calamares"):
#0  0xac0c552c in PartitionCoreModule::partitionModelForDevice(Device const*) const () from /usr/lib/i386-linux-gnu/calamares/modules/partition/libcalamares_viewmodule_partition.so
No symbol table info available.
#1  0xac0ee6b4 in PartitionPage::updateFromCurrentDevice() () from /usr/lib/i386-linux-gnu/calamares/modules/partition/libcalamares_viewmodule_partition.so
No symbol table info available.
#2  0xb66e377e in ?? () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#3  0xb788c251 in QComboBox::currentTextChanged(QString const&) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#4  0xb788ea6a in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#5  0xb789044f in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#6  0xb78905f3 in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#7  0xb789586c in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#8  0xb66e37b2 in ?? () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#9  0xb6640321 in QAbstractItemModel::modelReset(QAbstractItemModel::QPrivateSignal) () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#10 0xb6642bd7 in QAbstractItemModel::endResetModel() () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#11 0xac0c281e in DeviceModel::addDevice(Device*) () from /usr/lib/i386-linux-gnu/calamares/modules/partition/libcalamares_viewmodule_partition.so
No symbol table info available.
#12 0xac0c8aa9 in PartitionCoreModule::createVolumeGroup(QString&, QVector<Partition const*>, int) () from /usr/lib/i386-linux-gnu/calamares/modules/partition/libcalamares_viewmodule_partition.so
No symbol table info available.
#13 0xac0eed73 in PartitionPage::onNewVolumeGroupClicked() () from /usr/lib/i386-linux-gnu/calamares/modules/partition/libcalamares_viewmodule_partition.so
No symbol table info available.
#14 0xb66e377e in ?? () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#15 0xb7878d59 in QAbstractButton::clicked(bool) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#16 0xb7879893 in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#17 0xb787b2ed in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#18 0xb787b503 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#19 0xb77bee8f in QWidget::event(QEvent*) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#20 0xb787c33a in QAbstractButton::event(QEvent*) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#21 0xb7926f76 in QPushButton::event(QEvent*) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#22 0xb7779976 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#23 0xb7780e1d in QApplication::notify(QObject*, QEvent*) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#24 0xb66a99ca in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#25 0xb66a9c68 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#26 0xb777fdbd in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#27 0xb77d92bd in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#28 0xb77dcb2c in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#29 0xb7779976 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#30 0xb7780ad4 in QApplication::notify(QObject*, QEvent*) () from /lib/i386-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#31 0xb66a99ca in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#32 0xb66a9c68 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#33 0xb6a8954d in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /lib/i386-linux-gnu/sse2/libQt5Gui.so.5
No symbol table info available.
#34 0xb6a8a9b9 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /lib/i386-linux-gnu/sse2/libQt5Gui.so.5
No symbol table info available.
#35 0xb6a59fd4 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/i386-linux-gnu/sse2/libQt5Gui.so.5
No symbol table info available.
#36 0xb1a6fefb in ?? () from /lib/i386-linux-gnu/libQt5XcbQpa.so.5
No symbol table info available.
#37 0xb46178cd in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#38 0xb4617b69 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#39 0xb4617c34 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#40 0xb67079b2 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
No symbol table info available.
#41 0xb1a70371 in ?? () from /lib/i386-linux-gnu/libQt5XcbQpa.so.5
No symbol table info available.
#42 0xb66a802e in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/i386-linux-gnu/sse2/libQt5Core.so

#992164#44
Date:
2022-06-15 23:31:25 UTC
From:
To:
Had forget the step to add the debug repository in /etc/apt/sources.list

Here again... same calamares:

Thread 1 "calamares" received signal SIGSEGV, Segmentation fault.
PartitionCoreModule::partitionModelForDevice (this=0xd60490, device=0x13da150)
    at /usr/include/i386-linux-gnu/qt5/QtCore/qscopedpointer.h:138
138	/usr/include/i386-linux-gnu/qt5/QtCore/qscopedpointer.h: No such file or directory.
(gdb) bt
#0  PartitionCoreModule::partitionModelForDevice (this=0xd60490,
    device=0x13da150)
    at /usr/include/i386-linux-gnu/qt5/QtCore/qscopedpointer.h:138
#1  0xac1b66b4 in PartitionPage::updateFromCurrentDevice (this=0x1328f60)
    at ./src/modules/partition/gui/PartitionPage.cpp:569
#2  0xb66e377e in ?? () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
#3  0xb788c251 in QComboBox::currentTextChanged(QString const&) ()
   from /lib/i386-linux-gnu/libQt5Widgets.so.5
#4  0xb788ea6a in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
#5  0xb789044f in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
#6  0xb78905f3 in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
#7  0xb789586c in ?? () from /lib/i386-linux-gnu/libQt5Widgets.so.5
#8  0xb66e37b2 in ?? () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
#9  0xb6640321 in QAbstractItemModel::modelReset(QAbstractItemModel::QPrivateSignal) () from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
#10 0xb6642bd7 in QAbstractItemModel::endResetModel() ()
   from /lib/i386-linux-gnu/sse2/libQt5Core.so.5
#11 0xac18a81e in DeviceModel::addDevice (this=0xd776b0,
    device=<optimized out>) at ./src/modules/partition/core/DeviceModel.cpp:144
#12 0xac190aa9 in PartitionCoreModule::createVolumeGroup (this=0xd60490,
    vgName=..., pvList=..., peSize=4)
    at ./src/modules/partition/core/PartitionCoreModule.cpp:419
#13 0xac1b6d73 in PartitionPage::onNewVolumeGroupClicked (this=0x1328f60)

#992164#49
Date:
2022-06-16 15:37:41 UTC
From:
To:
Still a problem in Debian Testing.
paul@albukerk:~$ dpkg -l|grep calamares
ii  calamares                             3.2.59-1                           amd64        distribution-independent installer framework
ii  calamares-dbgsym                      3.2.59-1                           amd64        debug symbols for calamares
ii  calamares-settings-debian             12.0.2-1                           all          Debian theme and settings for the Calamares Installer

[Detaching after fork from child process 15314]
[Thread 0x7fffead06640 (LWP 14943) exited]
--Type <RET> for more, q to quit, c to continue without paging--

Thread 1 "calamares" received signal SIGSEGV, Segmentation fault.
PartitionCoreModule::partitionModelForDevice (this=<optimized out>,
    device=device@entry=0x555558686040)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:138
138	/usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h: Aucun fichier ou dossier de ce type.
(gdb) bt
#0  PartitionCoreModule::partitionModelForDevice (this=<optimized out>,
    device=device@entry=0x555558686040)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qscopedpointer.h:138
#1  0x00007fffc9956498 in PartitionPage::updateFromCurrentDevice (
    this=0x7fffec006cd0) at ./src/modules/partition/gui/PartitionPage.cpp:584
#2  0x00007ffff5ee6133 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffce90,
    r=0x7fffec006cd0, this=0x555558639290)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#3  doActivate<false> (sender=0x55555859f400, signal_index=14,
    argv=0x7fffffffce90) at kernel/qobject.cpp:3886
#4  0x00007ffff5edf5ff in QMetaObject::activate (
    sender=sender@entry=0x55555859f400,
    m=m@entry=0x7ffff7c825e0 <QComboBox::staticMetaObject>,
    local_signal_index=local_signal_index@entry=7,
    argv=argv@entry=0x7fffffffce90) at kernel/qobject.cpp:3946
#5  0x00007ffff7867e15 in QComboBox::currentTextChanged (
    this=this@entry=0x55555859f400, _t1=...) at .moc/moc_qcombobox.cpp:552
#6  0x00007ffff786a643 in QComboBoxPrivate::_q_emitCurrentIndexChanged (
    this=this@entry=0x5555585fdf10, index=...) at widgets/qcombobox.cpp:1481
#7  0x00007ffff786cf45 in QComboBoxPrivate::setCurrentIndex (
    this=this@entry=0x5555585fdf10, mi=...) at widgets/qcombobox.cpp:2326
#8  0x00007ffff786d0c0 in QComboBoxPrivate::trySetValidIndex (
    this=this@entry=0x5555585fdf10) at widgets/qcombobox.cpp:315
--Type <RET> for more, q to quit, c to continue without paging--
#9  0x00007ffff7871080 in QComboBoxPrivate::_q_modelReset (this=0x5555585fdf10)
    at widgets/qcombobox.cpp:296
#10 0x00007ffff5ee6168 in doActivate<false> (sender=0x555555b76080,
    signal_index=21, argv=0x7fffffffd150) at kernel/qobject.cpp:3898
#11 0x00007ffff5edf5ff in QMetaObject::activate (
    sender=sender@entry=0x555555b76080,
    m=m@entry=0x7ffff6147680 <QAbstractItemModel::staticMetaObject>,
    local_signal_index=local_signal_index@entry=18,
    argv=argv@entry=0x7fffffffd150) at kernel/qobject.cpp:3946
#12 0x00007ffff5e4a94d in QAbstractItemModel::modelReset (
    this=this@entry=0x555555b76080, _t1=...)
    at .moc/moc_qabstractitemmodel.cpp:648
#13 0x00007ffff5e4cacb in QAbstractItemModel::endResetModel (
    this=this@entry=0x555555b76080) at itemmodels/qabstractitemmodel.cpp:3304
#14 0x00007fffc9920b55 in DeviceModel::addDevice (this=0x555555b76080,
    device=<optimized out>, device@entry=0x555558686040)
    at ./src/modules/partition/core/DeviceModel.cpp:142
#15 0x00007fffc99294c5 in PartitionCoreModule::createVolumeGroup (
    this=0x555555d9c100, vgName=..., pvList=..., peSize=4)
    at ./src/modules/partition/core/PartitionCoreModule.cpp:428
#16 0x00007fffc9956db3 in PartitionPage::onNewVolumeGroupClicked (
    this=0x7fffec006cd0) at ./src/modules/partition/gui/PartitionPage.cpp:324
#17 0x00007ffff5ee6133 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffd410,
--Type <RET> for more, q to quit, c to continue without paging--
    r=0x7fffec006cd0, this=0x55555863db40)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#18 doActivate<false> (sender=0x55555862f210, signal_index=9,
    argv=0x7fffffffd410) at kernel/qobject.cpp:3886
#19 0x00007ffff5edf5ff in QMetaObject::activate (
    sender=sender@entry=0x55555862f210,
    m=m@entry=0x7ffff7c80180 <QAbstractButton::staticMetaObject>,
    local_signal_index=local_signal_index@entry=2,
    argv=argv@entry=0x7fffffffd410) at kernel/qobject.cpp:3946
#20 0x00007ffff7856352 in QAbstractButton::clicked (
    this=this@entry=0x55555862f210, _t1=<optimized out>)
    at .moc/moc_qabstractbutton.cpp:308
#21 0x00007ffff78565ca in QAbstractButtonPrivate::emitClicked (
    this=0x55555862f250) at widgets/qabstractbutton.cpp:415
#22 0x00007ffff7858190 in QAbstractButtonPrivate::click (this=0x55555862f250)
    at widgets/qabstractbutton.cpp:408
#23 0x00007ffff78583b3 in QAbstractButton::mouseReleaseEvent (
    this=0x55555862f210, e=0x7fffffffd9b0) at widgets/qabstractbutton.cpp:1044
#24 0x00007ffff77a54ce in QWidget::event (this=0x55555862f210,
    event=0x7fffffffd9b0) at kernel/qwidget.cpp:9019
#25 0x00007ffff77636bf in QApplicationPrivate::notify_helper (
    this=this@entry=0x5555557b9140, receiver=receiver@entry=0x55555862f210,
    e=e@entry=0x7fffffffd9b0) at kernel/qapplication.cpp:3632
--Type <RET> for more, q to quit, c to continue without paging--

(gdb) disassemble
Dump of assembler code for function _ZNK19PartitionCoreModule23partitionModelForDeviceEPK6Device:
   0x00007fffc9924e00 <+0>:	sub    $0x8,%rsp
   0x00007fffc9924e04 <+4>:	call   0x7fffc98ff810 <_ZNK19PartitionCoreModule13infoForDeviceEPK6Device@plt>
=> 0x00007fffc9924e09 <+9>:	mov    0x8(%rax),%rax
   0x00007fffc9924e0d <+13>:	add    $0x8,%rsp
   0x00007fffc9924e11 <+17>:	ret
End of assembler dump.
(gdb)

#992164#54
Date:
2022-06-16 15:41:48 UTC
From:
To:
Maybe it helps:
(gdb) info registers
rax            0x0                 0
rbx            0x7fffffffcd60      140737488342368
rcx            0x7fffcc004ab0      140736615959216
rdx            0x7fffcc004ac0      140736615959232
rsi            0x555558686040      93825043816512
rdi            0x555555d9c100      93825000915200
rbp            0x555558686040      0x555558686040
rsp            0x7fffffffcd10      0x7fffffffcd10
r8             0x0                 0
r9             0x55555863d5d0      93825043518928
r10            0xffffffff          4294967295
r11            0x9                 9
r12            0x7fffec006cd0      140737152838864
r13            0x7fffffffcd40      140737488342336
r14            0x7ffff5e4c500      140737318798592
r15            0x7fffffffce20      140737488342560
rip            0x7fffc9924e09      0x7fffc9924e09 <PartitionCoreModule::partitionModelForDevice(Device const*) const+9>
eflags         0x10246             [ PF ZF IF RF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
--Type <RET> for more, q to quit, c to continue without paging--c
fs             0x0                 0
gs             0x0                 0
(gdb)

#992164#59
Date:
2022-06-16 18:40:36 UTC
From:
To:
So... that would be in ~/mycala/calamares-3.2.59/src/modules/partition/gui/PartitionPage.cpp line 584


"void
PartitionPage::updateFromCurrentDevice()
{
    QModelIndex index = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 );
    if ( !index.isValid() )
    {
        return;
    }

    Device* device = m_core->deviceModel()->deviceForIndex( index );

    QAbstractItemModel* oldModel = m_ui->partitionTreeView->model();
    if ( oldModel )
    {
        disconnect( oldModel, nullptr, this, nullptr );
    }

    PartitionModel* model = m_core->partitionModelForDevice( device );
    m_ui->partitionBarsView->setModel( model );
    m_ui->partitionLabelsView->setModel( model );
    m_ui->partitionTreeView->setModel( model );
    m_ui->partitionTreeView->expandAll();
"

on the PartitionModel* model = m_core->partitionModelForDevice( device );

also... I might not be ok to do it like that but from:
https://code.woboq.org/qt5/qtbase/src/corelib/tools/qscopedpointer.h.html

it would be on: qtbase/src/corelib/tools/qscopedpointer.h:138
    T *data() const noexcept
    {
        return d;
    }
where documentation for qscopedPointer is at:
https://doc.qt.io/qt-6/qscopedpointer.html

My guess would be related to the ax value being returned would be a null pointer...
but I really do not much programming.