Crash after selecting unsupported ISO image
I tried to create a new VM, and selected "Install from file". Chose a local file, "debian-12.0.0-sparc64-NETINST-1.iso" from the file chooser. The application crashed with SIGSEGV.
It looks like this happens because of an unsupported ISO/file format. gnome-boxes 45.0. Also happens in main. Backtrace follows.
Thread 1 "gnome-boxes" received signal SIGSEGV, Segmentation fault.
boxes_assistant_prepare_for_path_co.isra.0 (_data_=0x55555678fe60)
at src/gnome-boxes.p/assistant/assistant.c:972
972 _data_->_tmp2_ = _data_->_tmp1_->os;
(gdb) t a a bt
Thread 101 (Thread 0x7fff777ff6c0 (LWP 2012) "pool-gnome-boxe"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007ffff7dcaeec in g_cond_wait_until (cond=cond@entry=0x555555713898, mutex=mutex@entry=0x555555713890, end_time=end_time@entry=14915526268) at ../glib/gthread-posix.c:1677
#2 0x00007ffff7d3b013 in g_async_queue_pop_intern_unlocked (queue=0x555555713890, wait=1, end_time=14915526268) at ../glib/gasyncqueue.c:428
#3 0x00007ffff7d9de5a in g_thread_pool_wait_for_new_task (pool=0x555555701050) at ../glib/gthreadpool.c:274
#4 g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:339
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x7fffe4001690) at ../glib/gthread.c:831
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 100 (Thread 0x7fffe9baf6c0 (LWP 2011) "pool-gnome-boxe"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007ffff7dcaeec in g_cond_wait_until (cond=cond@entry=0x555555713898, mutex=mutex@entry=0x555555713890, end_time=end_time@entry=14915526441) at ../glib/gthread-posix.c:1677
#2 0x00007ffff7d3b013 in g_async_queue_pop_intern_unlocked (queue=0x555555713890, wait=1, end_time=14915526441) at ../glib/gasyncqueue.c:428
#3 0x00007ffff7d9de5a in g_thread_pool_wait_for_new_task (pool=0x555555701050) at ../glib/gthreadpool.c:274
#4 g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:339
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x7fffe4000e30) at ../glib/gthread.c:831
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 99 (Thread 0x7fff867906c0 (LWP 2010) "pool-gnome-boxe"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007ffff7dcaeec in g_cond_wait_until (cond=cond@entry=0x555555713898, mutex=mutex@entry=0x555555713890, end_time=end_time@entry=14915526109) at ../glib/gthread-posix.c:1677
#2 0x00007ffff7d3b013 in g_async_queue_pop_intern_unlocked (queue=0x555555713890, wait=1, end_time=14915526109) at ../glib/gasyncqueue.c:428
#3 0x00007ffff7d9de5a in g_thread_pool_wait_for_new_task (pool=0x555555701050) at ../glib/gthreadpool.c:274
#4 g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:339
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x7fffe4001750) at ../glib/gthread.c:831
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 98 (Thread 0x7fff76ffe6c0 (LWP 2009) "pool-gnome-boxe"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007ffff7dcaeec in g_cond_wait_until (cond=cond@entry=0x555555713898, mutex=mutex@entry=0x555555713890, end_time=end_time@entry=14915526389) at ../glib/gthread-posix.c:1677
#2 0x00007ffff7d3b013 in g_async_queue_pop_intern_unlocked (queue=0x555555713890, wait=1, end_time=14915526389) at ../glib/gasyncqueue.c:428
#3 0x00007ffff7d9de5a in g_thread_pool_wait_for_new_task (pool=0x555555701050) at ../glib/gthreadpool.c:274
#4 g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:339
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x7fffe4001ed0) at ../glib/gthread.c:831
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 97 (Thread 0x7fff84b606c0 (LWP 2008) "pool-gnome-boxe"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007ffff7dcaeec in g_cond_wait_until (cond=cond@entry=0x555555713898, mutex=mutex@entry=0x555555713890, end_time=end_time@entry=14915526322) at ../glib/gthread-posix.c:1677
#2 0x00007ffff7d3b013 in g_async_queue_pop_intern_unlocked (queue=0x555555713890, wait=1, end_time=14915526322) at ../glib/gasyncqueue.c:428
#3 0x00007ffff7d9de5a in g_thread_pool_wait_for_new_task (pool=0x555555701050) at ../glib/gthreadpool.c:274
#4 g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:339
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x7fffe40016f0) at ../glib/gthread.c:831
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 89 (Thread 0x7fff760606c0 (LWP 1990) "pool-gnome-boxe"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007ffff7dcaeec in g_cond_wait_until (cond=cond@entry=0x555555713898, mutex=mutex@entry=0x555555713890, end_time=end_time@entry=14915526370) at ../glib/gthread-posix.c:1677
#2 0x00007ffff7d3b013 in g_async_queue_pop_intern_unlocked (queue=0x555555713890, wait=1, end_time=14915526370) at ../glib/gasyncqueue.c:428
#3 0x00007ffff7d9de5a in g_thread_pool_wait_for_new_task (pool=0x555555701050) at ../glib/gthreadpool.c:274
#4 g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:339
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x7fffe40015d0) at ../glib/gthread.c:831
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 7 (Thread 0x7fff86fe76c0 (LWP 1799) "PressureMonitor"):
#0 0x00007ffff1a8c4ee in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x7fff86fe6450, op=393, expected=0, futex_word=0x7fffd2048160) at futex-internal.c:57
#1 __futex_abstimed_wait_common (futex_word=futex_word@entry=0x7fffd2048160, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x7fff86fe6450, private=private@entry=0, cancel=cancel@entry=true) at futex-internal.c:87
#2 0x00007ffff1a8c58f in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x7fffd2048160, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x7fff86fe6450, private=private@entry=0) at futex-internal.c:139
#3 0x00007ffff1a8f555 in __pthread_cond_wait_common (abstime=0x7fff86fe6450, clockid=0, mutex=0x7fffd2048110, cond=0x7fffd2048138) at pthread_cond_wait.c:503
#4 ___pthread_cond_timedwait64 (cond=0x7fffd2048138, mutex=0x7fffd2048110, abstime=0x7fff86fe6450) at pthread_cond_wait.c:643
#5 0x00007fffef942d91 in WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime) () at /lib64/libjavascriptcoregtk-4.1.so.0
#6 0x00007fffef8d3c6b in WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&) () at /lib64/libjavascriptcoregtk-4.1.so.0
#7 0x00007fffef8d7e44 in WTF::sleep(WTF::Seconds) () at /lib64/libjavascriptcoregtk-4.1.so.0
#8 0x00007ffff2beb1db in () at /lib64/libwebkit2gtk-4.1.so.0
#9 0x00007ffff2beb67b in () at /lib64/libwebkit2gtk-4.1.so.0
#10 0x00007fffef8d9d66 in () at /lib64/libjavascriptcoregtk-4.1.so.0
#11 0x00007fffef942419 in () at /lib64/libjavascriptcoregtk-4.1.so.0
#12 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#13 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 6 (Thread 0x7fffe8fff6c0 (LWP 1797) "gdbus"):
#0 0x00007ffff1b09d9f in __GI___poll (fds=0x55555665c7b0, nfds=6, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007ffff7d70aff in g_main_context_poll_unlocked (priority=<optimized out>, n_fds=6, fds=0x55555665c7b0, timeout=<optimized out>, context=0x7fffe000b080) at ../glib/gmain.c:4653
#2 g_main_context_iterate_unlocked (context=0x7fffe000b080, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4344
#3 0x00007ffff7d7142f in g_main_loop_run (loop=0x7fffe000b1b0) at ../glib/gmain.c:4551
#4 0x00007ffff71ff9f6 in gdbus_shared_thread_func (user_data=0x7fffe000b050) at ../gio/gdbusprivate.c:284
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x7fffe000b1d0) at ../glib/gthread.c:831
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 4 (Thread 0x7fffea3b06c0 (LWP 1795) "dconf worker"):
#0 0x00007ffff1b09d9f in __GI___poll (fds=0x7fffe0000b90, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007ffff7d70aff in g_main_context_poll_unlocked (priority=<optimized out>, n_fds=1, fds=0x7fffe0000b90, timeout=<optimized out>, context=0x555555716170) at ../glib/gmain.c:4653
#2 g_main_context_iterate_unlocked (context=context@entry=0x555555716170, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4344
#3 0x00007ffff7d7120c in g_main_context_iteration (context=0x555555716170, may_block=1) at ../glib/gmain.c:4414
#4 0x00007ffff7faa97d in () at /usr/lib64/gio/modules/libdconfsettings.so
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x555555716360) at ../glib/gthread.c:831
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 3 (Thread 0x7fffeabb16c0 (LWP 1794) "gmain"):
#0 0x00007ffff1b09d9f in __GI___poll (fds=0x555555714000, nfds=2, timeout=2025) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007ffff7d70aff in g_main_context_poll_unlocked (priority=<optimized out>, n_fds=2, fds=0x555555714000, timeout=<optimized out>, context=0x555555713d70) at ../glib/gmain.c:4653
#2 g_main_context_iterate_unlocked (context=context@entry=0x555555713d70, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4344
#3 0x00007ffff7d7120c in g_main_context_iteration (context=0x555555713d70, may_block=may_block@entry=1) at ../glib/gmain.c:4414
#4 0x00007ffff7d71251 in glib_worker_main (data=<optimized out>) at ../glib/gmain.c:6574
#5 0x00007ffff7d9d49e in g_thread_proxy (data=0x555555713fa0) at ../glib/gthread.c:831
--Type <RET> for more, q to quit, c to continue without paging--
#6 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 2 (Thread 0x7fffeb3b26c0 (LWP 1793) "pool-spawner"):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007ffff7dcad40 in g_cond_wait (cond=cond@entry=0x555555713938, mutex=mutex@entry=0x555555713930) at ../glib/gthread-posix.c:1552
#2 0x00007ffff7d3b03b in g_async_queue_pop_intern_unlocked (queue=0x555555713930, wait=1, end_time=-1) at ../glib/gasyncqueue.c:425
#3 0x00007ffff7d9dae2 in g_thread_pool_spawn_thread (data=<optimized out>) at ../glib/gthreadpool.c:311
#4 0x00007ffff7d9d49e in g_thread_proxy (data=0x555555713980) at ../glib/gthread.c:831
#5 0x00007ffff1a8ff44 in start_thread (arg=<optimized out>) at pthread_create.c:444
#6 0x00007ffff1b184ec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Thread 1 (Thread 0x7fffeb49ae40 (LWP 1790) "gnome-boxes"):
#0 boxes_assistant_prepare_for_path_co.isra.0 (_data_=0x55555678fe60) at src/gnome-boxes.p/assistant/assistant.c:972
#1 0x00007ffff71942a4 in g_task_return_now (task=task@entry=0x555556461fd0) at ../gio/gtask.c:1371
#2 0x00007ffff7195113 in g_task_return (type=<optimized out>, task=0x555556461fd0) at ../gio/gtask.c:1440
#3 g_task_return (task=0x555556461fd0, type=<optimized out>) at ../gio/gtask.c:1397
#4 0x00005555555ede58 in boxes_assistant_create_installer_media_co.isra.0 (_data_=0x555556173180) at src/gnome-boxes.p/assistant/assistant.c:890
#5 0x00007ffff71942a4 in g_task_return_now (task=task@entry=0x555556462090) at ../gio/gtask.c:1371
#6 0x00007ffff7195113 in g_task_return (type=<optimized out>, task=0x555556462090) at ../gio/gtask.c:1440
#7 g_task_return (task=0x555556462090, type=<optimized out>) at ../gio/gtask.c:1397
#8 0x00005555555ffb00 in boxes_media_manager_create_installer_media_for_path_co.isra.0 (_data_=0x5555564002b0) at src/gnome-boxes.p/media-manager.c:665
#9 0x00007ffff71942a4 in g_task_return_now (task=task@entry=0x5555565306a0) at ../gio/gtask.c:1371
#10 0x00007ffff7195113 in g_task_return (type=<optimized out>, task=0x5555565306a0) at ../gio/gtask.c:1440
#11 g_task_return (task=0x5555565306a0, type=<optimized out>) at ../gio/gtask.c:1397
#12 0x0000555555608019 in boxes_installer_media_construct_for_path_co.isra.0 (_data_=0x555556798410) at src/gnome-boxes.p/installer-media.c:772
#13 0x00007ffff71942a4 in g_task_return_now (task=task@entry=0x555556421b30) at ../gio/gtask.c:1371
#14 0x00007ffff7195113 in g_task_return (type=<optimized out>, task=0x555556421b30) at ../gio/gtask.c:1440
#15 g_task_return (task=0x555556421b30, type=<optimized out>) at ../gio/gtask.c:1397
#16 0x00005555555fdf90 in boxes_os_database_guess_os_from_install_media_path_co.isra.0 (_data_=0x555556614f70) at src/gnome-boxes.p/os-database.c:955
#17 0x00007ffff71942a4 in g_task_return_now (task=task@entry=0x555556538460) at ../gio/gtask.c:1371
#18 0x00007ffff7195113 in g_task_return (type=<optimized out>, task=0x555556538460) at ../gio/gtask.c:1440
#19 g_task_return (task=0x555556538460, type=<optimized out>) at ../gio/gtask.c:1397
#20 0x00007ffff701b43a in () at /lib64/libosinfo-1.0.so.0
#21 0x00007ffff71942a4 in g_task_return_now (task=task@entry=0x5555557999b0) at ../gio/gtask.c:1371
#22 0x00007ffff7195113 in g_task_return (type=<optimized out>, task=0x5555557999b0) at ../gio/gtask.c:1440
#23 g_task_return (task=0x5555557999b0, type=<optimized out>) at ../gio/gtask.c:1397
#24 0x00007ffff7014fb6 in () at /lib64/libosinfo-1.0.so.0
#25 0x00007ffff71603ba in async_ready_callback_wrapper (source_object=0x7fff58003660, res=0x555555799a70, user_data=0x7fff78013950) at ../gio/ginputstream.c:565
#26 0x00007ffff71942a4 in g_task_return_now (task=task@entry=0x555555799a70) at ../gio/gtask.c:1371
#27 0x00007ffff71942d9 in complete_in_idle_cb (task=task@entry=0x555555799a70) at ../gio/gtask.c:1385
#28 0x00007ffff7d6c77e in g_idle_dispatch (source=0x7fff6c121620, callback=0x7ffff71942d0 <complete_in_idle_cb>, user_data=0x555555799a70) at ../glib/gmain.c:6282
#29 0x00007ffff7d6ef30 in g_main_dispatch (context=0x5555557080e0) at ../glib/gmain.c:3476
#30 g_main_context_dispatch_unlocked (context=context@entry=0x5555557080e0) at ../glib/gmain.c:4284
#31 0x00007ffff7d70b58 in g_main_context_iterate_unlocked (context=context@entry=0x5555557080e0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4349
#32 0x00007ffff7d7120c in g_main_context_iteration (context=context@entry=0x5555557080e0, may_block=may_block@entry=1) at ../glib/gmain.c:4414
#33 0x00007ffff71c354d in g_application_run (application=application@entry=0x555555705080, argc=1, argv=<optimized out>) at ../gio/gapplication.c:2577
#34 0x0000555555587118 in _vala_main (args_length1=<optimized out>, args=<optimized out>) at src/gnome-boxes.p/main.c:514
#35 main (argc=<optimized out>, argv=<optimized out>) at src/gnome-boxes.p/main.c:524
(gdb) l
967 _state_1:
968 _data_->_tmp0_ = boxes_assistant_create_installer_media_finish (_data_->self, _data_->_res_);
969 _g_object_unref0 (_data_->self->priv->installer_media);
970 _data_->self->priv->installer_media = _data_->_tmp0_;
971 _data_->_tmp1_ = _data_->self->priv->installer_media;
972 _data_->_tmp2_ = _data_->_tmp1_->os;
973 if (_data_->_tmp2_ != NULL) {
974 _data_->_tmp3_ = _data_->self->priv->os_chooser_row;
975 _data_->_tmp4_ = boxes_assistant_get_os (_data_->self);
976 _data_->_tmp5_ = _data_->_tmp4_;
(gdb) p *_data_
$1 = {_state_ = 1, _source_object_ = 0x55555629d1a0, _res_ = 0x555556461fd0, _async_result = 0x555556622350, self = 0x55555629d1a0, path = 0x5555567520c0 "/home/hpj/work/iso/debian-12.0.0-sparc64-NETINST-1.iso", _tmp0_ = 0x0, _tmp1_ = 0x0, _tmp2_ = 0x0,
_tmp3_ = 0x0, _tmp4_ = 0x0, _tmp5_ = 0x0, _tmp6_ = 0x0, _tmp7_ = 0x0, _tmp8_ = 0x0, _tmp9_ = 0x0, _tmp10_ = 0x0, _tmp11_ = 0x0, _tmp12_ = 0x0}
(gdb)
assistant.create_installer_media()
returns a null pointer, which gets dereferenced.