Core dump during automatic reconstruction
Describe the bug I'm a COLMAP beginner processing the Gerrard Hall images using Automatic Reconstruction. The program core dumped when it started the first image in the the "Image Undistortion" phase. You'll see below that the machine is an old i7, but has a more recent NVidia card and 16GB of RAM.
To Reproduce Preparation: Build and install COLMAP by following follow the instructions for Debian/Ubuntu at https://colmap.github.io/install.html
- My commit is 64805cb870b574a569dccc34918d95a2db2b2fee.
- It was necessary to run "sudo apt-get update" before the tools and libraries would install properly (suggest update the instructions).
Steps to reproduce the behavior:
- Download gerrard-hall.zip and unzip to folder whatever/gerrard-hall
- Create folder whatever/gerrard-proj
- Start Automatic Reconstruction from the COLMAP gui.
- Set the project folder as whatever/gerrard-proj
- Set the image folder as whatever/gerrard-hall/images
- Change no other options and press Run.
Expected behavior No core dump.
Screenshots
I20260729 10:29:22.631182 12234 incremental_pipeline.cc:793] Keeping successful reconstruction
I20260729 10:29:22.645833 12234 timer.cc:90] Elapsed time: 6.119 [minutes]
I20260729 10:29:22.766783 12234 automatic_reconstruction.cc:368] === Dense reconstruction ===
I20260729 10:29:22.766952 12234 undistorters.cc:167] === Image undistortion ===
I20260729 10:29:22.769179 12234 undistorters.cc:206] Undistorting image [1/100]
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
*** Aborted at 1785317382 (unix time) try "date -d @1785317382" if you are using GNU date ***
PC: @ 0x0 (unknown)
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
*** SIGABRT (@0x3e800002ee2) received by PID 12002 (TID 0x7455caffd000) from PID 12002; stack trace: ***
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
@ 0x74564a95c206 (unknown)
@ 0x74563c445330 (unknown)
@ 0x74563c49eb2c pthread_kill
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
@ 0x74563c44527e gsignal
@ 0x74563c4288ff abort
@ 0x74563e6a0ef2 (unknown)
@ 0x74563e6a9091 OpenImageIO_v2_4::encode_iptc_iim()
@ 0x74563e75f2d9 OpenImageIO_v2_4::JpgOutput::open()
@ 0x57e7c3b46726 colmap::Bitmap::Write()
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
@ 0x57e7c2e80c24 colmap::COLMAPUndistorter::Undistort()
@ 0x57e7c2e88e5b _ZNSt17_Function_handlerIFSt10unique_ptrINSt13__future_base12_Result_baseENS2_8_DeleterEEvENS1_12_Task_setterIS0_INS1_7_ResultIbEES3_EZNS1_11_Task_stateISt5_BindIFMN6colmap17COLMAPUndistorterEKFbjEPSD_jEESaIiEFbvEE6_M_runEvEUlvE_bEEE9_M_invokeERKSt9_Any_data
@ 0x57e7c2dc586d std::__future_base::_State_baseV2::_M_do_set()
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
./src/libOpenImageIO/iptc.cpp:167: encode_iptc_iim_one_tag: Assertion 'data != nullptr' failed.
@ 0x74563c4a1ed3 (unknown)
@ 0x57e7c2e8a09e std::__future_base::_Task_state<>::_M_run()
@ 0x57e7c2e8c1b0 _ZNSt17_Function_handlerIFSt8functionIFvvEEvEZN6colmap10ThreadPool7AddTaskIMNS4_17COLMAPUndistorterEKFbjEJPS7_RKjEEESt13shared_futureINSt13invoke_resultIT_JDpT0_EE4typeEEOSF_DpOSG_EUlvE_E9_M_invokeERKSt9_Any_data
@ 0x57e7c2fb3b7b colmap::ThreadPool::WorkerFunc()
@ 0x74563c8ecdb4 (unknown)
@ 0x74563c49caa4 (unknown)
@ 0x74563c529c6c (unknown)
Aborted (core dumped)After the abort, the project folder looked like this:
└── gerrard-proj
├── database.db
├── dense
│ └── 0
│ ├── images
│ │ ├── IMG_2384.JPG
│ │ ├── IMG_2385.JPG
│ │ ├── IMG_2386.JPG
│ │ ├── IMG_2388.JPG
│ │ ├── IMG_2389.JPG
│ │ ├── IMG_2391.JPG
│ │ ├── IMG_2392.JPG
│ │ ├── IMG_2393.JPG
│ │ └── IMG_2394.JPG
│ ├── sparse
│ └── stereo
│ ├── consistency_graphs
│ ├── depth_maps
│ └── normal_maps
└── sparse
├── 0
│ ├── cameras.bin
│ ├── frames.bin
│ ├── images.bin
│ ├── points3D.bin
│ └── rigs.bin
└── project.iniEnvironment: $ uname -a Linux al-ubuntu 6.17.0-19-generic #19~24.04.2-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 6 23:08:46 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 12 On-line CPU(s) list: 0-11 Vendor ID: GenuineIntel Model name: Intel(R) Core(TM) i7-4930K CPU @ 3.40GHz
$ cat /proc/meminfo MemTotal: 16307056 kB
$ sudo lshw -C display
*-display
description: VGA compatible controller
product: GA107 [GeForce RTX 3050 6GB]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
logical name: /dev/fb0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=nvidia latency=0 resolution=1920,1080
resources: irq:61 memory:fa000000-faffffff memory:c0000000-cfffffff memory:d0000000-d1ffffff ioport:e000(size=128) memory:c0000-dffff
$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2023 NVIDIA Corporation Built on Fri_Jan__6_16:45:21_PST_2023 Cuda compilation tools, release 12.0, V12.0.140 Build cuda_12.0.r12.0/compiler.32267302_0
Source: colmap/colmap