In 2020 I had asked for help with searching for UTF-8 text in binary data (i.e. any files on a disk). I got some advice and all worked well.
Now I expanded my code to also search for UTF-16 text in the same data.
So I built the lib with both the 8 and 16 bit functions, and create separate pcre_code, match_data, context etc. using the _8 and _16 suffixes instead of the default macros.
And it all works fine in small test cases - It finds both UTF-8 and UTF-16 strings in files.
However, I now get crashes in the pcre2_match_16() function when searching large files, whereas I never get them in the _8 function. And it happens both with JIT and without.
I also use the same options for both versions, of course.
With PCRE2 v10.42.
I ruled out a mix-up between the _8 and _16 structs by only using the _16 code, and I don't use concurrent threads.
The crashes are a bit random, i.e. certain files crash often but not always.
But within 5 seconds of scanning random files on my disk, I get always a crash.
Since I use a built lib, I cannot easily look at the source code where it crashes.
I wonder if there are cmdline tools I can use for testing in order to rule out a mistake on my end. But it seems that pcre2grep does not support UTF-16 search, right? Or do I have to build the tool with special options first?
--
Thomas Tempelmann,
http://apps.tempel.org/