Skip to content

Bug: Coverage upload failing when switching from cobertura to lcov #2263

@ukch

Description

@ukch

What happened?

We recently changed our coverage output format from cobertura.xml to coverage.lcov

Now, attempting to upload the new coverage file results in the following stacktrace (with RUST_BACKTRACE=full) - see log output

I assume this error is caused by the change in format. I attempted to delete existing coverage within the QLTY platform but I'm not sure whether this is possible (or if it is, how to do it).

What did you expect to happen?

Coverage to be successfully uploaded

Can you reproduce the problem?

Yes, consistently

CLI Version

qlty 0.556.0 linux-x64 (9ed3b48 2025-07-17)

Relevant log output

$ RUST_BACKTRACE=full qlty coverage publish --format=lcov coverage.lcov
qlty 0.556.0 linux-x64 (9ed3b48 2025-07-17)
2025-07-31T14:21:12.723155Z
https://qlty.sh/d/coverage

 SETTINGS 

    cwd: /home/joel/projects/moya/moya-survey-api/app
    dry-run: true
    format: lcov
    override-branch: joel/require-mypy-etc
    override-commit-sha: f546d807adce565831a866efa76a030ec0b514a4
    add-prefix: app

 METADATA 

    CI: unknown
    Commit: f546d807adce565831a866efa76a030ec0b514a4
    Branch: joel/require-mypy-etc
    Commit Time: 2025-07-30 19:16:59 UTC

 COVERAGE FILES: 1 

    Coverage File  Format  Size
    coverage.lcov  lcov    114.11 KiB


thread 'main' panicked at qlty-coverage/src/parser/lcov.rs:51:30:
index out of bounds: the len is 0 but the index is 4294967295
stack backtrace:
   0:     0x5a270568f0e2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h46a716bba2450163
   1:     0x5a27056bc703 - core::fmt::write::h275e5980d7008551
   2:     0x5a2705689343 - std::io::Write::write_fmt::h561a66a0340b6995
   3:     0x5a270568ef32 - std::sys::backtrace::BacktraceLock::print::hafb9d5969adc39a0
   4:     0x5a270569163c - std::panicking::default_hook::{{closure}}::hae2e97a5c4b2b777
   5:     0x5a270569143f - std::panicking::default_hook::h3db1b505cfc4eb79
   6:     0x5a2704198310 - qlty::setup_panic_hook::{{closure}}::h978ae812cfa9036d
   7:     0x5a27056920b3 - std::panicking::rust_panic_with_hook::h409da73ddef13937
   8:     0x5a2705691d8a - std::panicking::begin_panic_handler::{{closure}}::h159b61b27f96a9c2
   9:     0x5a270568f5d9 - std::sys::backtrace::__rust_end_short_backtrace::h5b56844d75e766fc
  10:     0x5a2705691a1d - __rustc[4794b31dd7191200]::rust_begin_unwind
  11:     0x5a270417ab10 - core::panicking::panic_fmt::hc8737e8cca20a7c8
  12:     0x5a270417acf2 - core::panicking::panic_bounds_check::hda0827d94e974e71
  13:     0x5a27045084e5 - <qlty_coverage::parser::lcov::Lcov as qlty_coverage::parser::Parser>::parse_text::h5cbe02f285e796f7
  14:     0x5a27045087c0 - qlty_coverage::parser::Parser::parse_file::h3fc581e5fe5acbea
  15:     0x5a2704525e55 - qlty_coverage::publish::reader::Reader::read::h9a8d9b663e981db9
  16:     0x5a2704210955 - qlty::commands::coverage::publish::Publish::execute::hd2aefbd121ebf8d1
  17:     0x5a270420d39c - qlty::arguments::Arguments::execute::h655f88c557aa7fc3
  18:     0x5a2704195b75 - qlty::run_command_line::hab66e24f4f0c2205
  19:     0x5a270417b4e3 - std::sys::backtrace::__rust_begin_short_backtrace::h7fef67fd3c2cc188
  20:     0x5a270417b4d9 - std::rt::lang_start::{{closure}}::h6ea8efa53e90c0c1
  21:     0x5a270567d884 - std::rt::lang_start_internal::ha8ef919ae4984948
  22:     0x5a270417b535 - main
  23:     0x763eede2a1ca - __libc_start_call_main
                               at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
  24:     0x763eede2a28b - __libc_start_main_impl
                               at ./csu/../csu/libc-start.c:360:3
  25:     0x5a270417b405 - _start
  26:                0x0 - <unknown>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions