Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TIFF file(s) causing DROID to hang #1140

Open
Dclipsham opened this issue Nov 27, 2024 · 1 comment · May be fixed by #1165
Open

TIFF file(s) causing DROID to hang #1140

Dclipsham opened this issue Nov 27, 2024 · 1 comment · May be fixed by #1165
Assignees
Labels

Comments

@Dclipsham
Copy link

Dclipsham commented Nov 27, 2024

The attached TIFF file causes DROID to hang - basically a scan never completes. This isn't the only one - others from the same digitized batch have the same issue. (I've attached within a zip but scanning from within or without the zip has the same hang issue)

I can't see anything obviously broken within the file, but I'm getting no clue from DROID logs as to why it's problematic. It might well be some interesting TIFF subset format, but even if it is, that would typically still give me a result and I could look at improving PRONOM.
RGE0021-B23F26-0001-008.zip

Environment details:
DROID 6.8, Windows 10, Java 11 OpenJDK as supplied in the DROID binary

David

MancunianSam added a commit that referenced this issue Feb 3, 2025
fixes #1140

DROID is getting stuck in an infinite loop trying to match the right fragments for [this signature](https://github.com/nationalarchives/pronom-signatures/blob/develop/signatures/fmt/134.json#L132)

The steps are something like:

1. It finds matches for 7 of the 8 right fragments.
2. It adds these to a matched list
3. It doesn't find a match for the 8th fragment
4. It then searches each of the fragments in the matched list to either side of the previous matches.
5. Fragments 1-7 match and so stay in the matched list
6. The last matched fragment position is set to 7
7. The loop checking each fragment increments the fragment position to 8
8. It doesn't find a match for the 8th fragment
9. Repeat steps 3 - 9

The problem I think is step 6. It shouldn't be changing the loop counter.

The issue is that I'm not 100% sure if by doing this, we'll be skipping
some fragment checks which will cause a different format to not be
matched at some point in the future.
I don't think so though because the main loop still iterates through
every fragment.
@MancunianSam MancunianSam linked a pull request Feb 3, 2025 that will close this issue
@MancunianSam
Copy link
Collaborator

I think this is a bug. DROID is getting stuck in an infinite loop trying to match the right fragments for this signature

The steps are something like:

  1. It finds matches for 7 of the 8 right fragments.
  2. It adds these to a matched list
  3. It doesn't find a match for the 8th fragment
  4. It then searches each of the fragments in the matched list to either side of the previous matches.
  5. Fragments 1-7 match and so stay in the matched list
  6. The last matched fragment position is set to 7
  7. The loop checking each fragment increments the fragment position to 8
  8. It doesn't find a match for the 8th fragment
  9. Repeat steps 3 - 9

The problem I think is step 6. It shouldn't be changing the loop counter.

I've made a change on a branch and built the droid-core jar from this branch

If you unzip the attached file and drop droid-core-6.8.0.jar into the /lib folder where DROID is installed then can you try matching the file again please.

droid-core.zip

@MancunianSam MancunianSam self-assigned this Feb 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants