Skip to content

Using --rolling-shutter and --split together causes "opensfm create_tracks" to crash #2043

Description

@zestyping

When the --rolling-shutter option is used on a local split-merge run (--split), the spawned opensfm create_tracks command crashes on the second submodel.

Here are the last few lines of log output. This happens after reconstruction has finished for the second time on submodel_0000, just as opensfm create_tracks is starting on submodel_0001.

2026-07-01 16:20:11,477 DEBUG: Ceres Solver Report: Iterations: 21, Initial cost: 5.713060e+01, Final cost: 4.698220e+01, Termination: CONVERGENCE
2026-07-01 16:20:11,479 INFO: Removed outliers: 0
2026-07-01 16:20:11,480 INFO: Reconstruction 0: 1682 images, 1692562 points
2026-07-01 16:20:11,480 INFO: Reconstruction 1: 4 images, 858 points
2026-07-01 16:20:11,480 INFO: Reconstruction 2: 4 images, 477 points
2026-07-01 16:20:11,480 INFO: Reconstruction 3: 3 images, 355 points
2026-07-01 16:20:11,480 INFO: 4 partial reconstructions in total.
[WARNING] Multiple reconstructions detected (4), this might be an indicator that some areas did not have sufficient overlap
[INFO]    Attempting merge
[INFO]    Merging reconstruction 0
[INFO]    Merging reconstruction 1
[INFO]    Merging reconstruction 2
[INFO]    Merging reconstruction 3
[WARNING] Cannot merge shot id DJI_20260218170311_0450_D.JPG (Landmark 163348 already exists.)
[WARNING] Cannot merge shot id DJI_20260218170311_0450_D.JPG (Landmark 1114550 already exists.)
[WARNING] Cannot merge shot id DJI_20260218170311_0450_D.JPG (Landmark 163061 already exists.)
[WARNING] Cannot merge shot id DJI_20260218170311_0450_D.JPG (Landmark 163051 already exists.)
[INFO]    Reconstructing /datasets/hunk51-200m-rs/submodels/submodel_0001/opensfm
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" create_tracks "/datasets/hunk51-200m-rs/submodels/submodel_0001/opensfm"
2026-07-01 16:21:13,786 INFO: reading features
2026-07-01 16:21:32,594 DEBUG: Merging features onto tracks
2026-07-01 16:22:05,543 DEBUG: Good tracks: 2204332
Traceback (most recent call last):
  File "/code/SuperBuild/install/bin/opensfm/bin/opensfm_main.py", line 25, in <module>
    commands.command_runner(
  File "/code/SuperBuild/install/bin/opensfm/opensfm/commands/command_runner.py", line 38, in command_runner
    command.run(data, args)
  File "/code/SuperBuild/install/bin/opensfm/opensfm/commands/command.py", line 13, in run
    self.run_impl(data, args)
  File "/code/SuperBuild/install/bin/opensfm/opensfm/commands/create_tracks.py", line 13, in run_impl
    create_tracks.run_dataset(dataset)
  File "/code/SuperBuild/install/bin/opensfm/opensfm/actions/create_tracks.py", line 18, in run_dataset
    tracks_manager = tracking.create_tracks_manager(
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/code/SuperBuild/install/bin/opensfm/opensfm/tracking.py", line 93, in create_tracks_manager
    x, y, s = features[image][featureid]
              ~~~~~~~~~~~~~~~^^^^^^^^^^^
IndexError: index 6215 is out of bounds for axis 0 with size 4483

For context on which stage we're at, here's the sequence of spawned commands:

# grep 'running "' odm.log
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" detect_features "/datasets/hunk51-200m-rs/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" match_features "/datasets/hunk51-200m-rs/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" create_submodels "/datasets/hunk51-200m-rs/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" create_tracks "/datasets/hunk51-200m-rs/submodels/submodel_0000/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" reconstruct "/datasets/hunk51-200m-rs/submodels/submodel_0000/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" rs_correct "/datasets/hunk51-200m-rs/submodels/submodel_0000/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" match_features "/datasets/hunk51-200m-rs/submodels/submodel_0000/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" create_tracks "/datasets/hunk51-200m-rs/submodels/submodel_0000/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" reconstruct "/datasets/hunk51-200m-rs/submodels/submodel_0000/opensfm"
[INFO]    running "/code/SuperBuild/install/bin/opensfm/bin/opensfm" create_tracks "/datasets/hunk51-200m-rs/submodels/submodel_0001/opensfm"

The entire ODM log file is attached here: odm.log.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions