Skip to content

Comparing fails with `RuntimeError: can't start new thread`

When trying to compare files with try.diffoscope.org, I get this:

Whoops! An error occurred when comparing your files

WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
Traceback (most recent call last):
  File "/srv/diffoscope/diffoscope/main.py", line 766, in main
    sys.exit(run_diffoscope(parsed_args))
  File "/srv/diffoscope/diffoscope/main.py", line 717, in run_diffoscope
    difference = compare_root_paths(path1, path2)
  File "/srv/diffoscope/diffoscope/comparators/utils/compare.py", line 69, in compare_root_paths
    difference = compare_files(file1, file2)
  File "/srv/diffoscope/diffoscope/comparators/utils/compare.py", line 149, in compare_files
    return file1.compare(file2, source)
  File "/srv/diffoscope/diffoscope/comparators/utils/file.py", line 515, in compare
    difference = self._compare_using_details(other, source)
  File "/srv/diffoscope/diffoscope/comparators/utils/file.py", line 450, in _compare_using_details
    details.extend(
  File "/srv/diffoscope/diffoscope/comparators/utils/container.py", line 197, in compare_pair
    difference = compare_files(
  File "/srv/diffoscope/diffoscope/comparators/utils/compare.py", line 149, in compare_files
    return file1.compare(file2, source)
  File "/srv/diffoscope/diffoscope/comparators/utils/file.py", line 515, in compare
    difference = self._compare_using_details(other, source)
  File "/srv/diffoscope/diffoscope/comparators/utils/file.py", line 416, in _compare_using_details
    details.extend(self.compare_details(other, source))
  File "/srv/diffoscope/diffoscope/comparators/tar.py", line 39, in compare_details
    Difference.from_text_readers(
  File "/srv/diffoscope/diffoscope/difference.py", line 258, in from_text_readers
    return Difference.from_feeder(
  File "/srv/diffoscope/diffoscope/difference.py", line 214, in from_feeder
    unified_diff = diff(feeder1, feeder2)
  File "/srv/diffoscope/diffoscope/diff.py", line 334, in diff
    with FIFOFeeder(feeder1, fifo1_path) as fifo1, FIFOFeeder(
  File "/srv/diffoscope/diffoscope/diff.py", line 220, in __enter__
    self.start()
  File "/usr/lib/python3.10/threading.py", line 935, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't start new thread
{"msg": "", "total": 286721, "current": 286721}
{"msg": "", "total": 286721, "current": 286721}
# Profiling output for: /srv/diffoscope/bin/diffoscope --status-fd=2 --html output.html --text output.txt --profile=- a/libvchan-xen-deb11_4.1.8.orig.tar.gz b/libvchan-xen-deb12_4.1.8.orig.tar.gz

## command (total time: 0.006s)
       0.006s      2 calls    gzip
       0.000s      1 call     cmp (internal)

## container_extract (total time: 0.007s)
       0.007s      2 calls    diffoscope.comparators.gzip.GzipContainer

## has_same_content_as (total time: 0.000s)
       0.000s      1 call     abc.TarFile
       0.000s      1 call     abc.GzipFile

## main (total time: 0.000s)
       0.000s      1 call     cleanup

## open_archive (total time: 0.000s)
       0.000s      2 calls    diffoscope.comparators.gzip.GzipContainer

## recognizes (total time: 0.023s)
       0.021s     84 calls    diffoscope.comparators.binary.FilesystemFile
       0.002s    114 calls    diffoscope.comparators.utils.archive.ArchiveMember
       0.001s     82 calls    abc.GzipFile

## specialize (total time: 0.004s)
       0.004s      2 calls    specialize