ImageMagick.MagickResourceLimitErrorException: 'TooManyExceptions (обработка исключений приостановлена) - PullRequest
0 голосов
/ 10 января 2019

Я получаю эту ошибку:

ImageMagick.MagickResourceLimitErrorException: 'TooManyExceptions (exception processing is suspended) @ error/exception.c/ThrowException/969'

В этой строке

using (MagickImageCollection tiffPageCollection = new MagickImageCollection())
{
    tiffPageCollection.Read(tifName);  // fails here.
}

Проблема возникает из-за того, что на странице 92 есть три ошибки, подобные этой на каждой странице:

{"ASCII value for tag \"Copyright\" does not end in null byte. `TIFFFetchNormalTag' @ warning/tiff.c/TIFFWarnings/1007"}    ImageMagick.MagickException {ImageMagick.MagickCoderWarningException}

Превышено количество ошибок предупреждений, что вызывает ошибки TooManyExceptions.

Этот URL-адрес ссылается на решение:

http://www.imagemagick.org/discourse-server/viewtopic.php?t=33989

добавления этого обработчика:

private void MagickNET_Log (object sender, LogEventArgs e)
{
    // write to a single log file...
    if ((RemoteImageMagickEventLogging & e.EventType) != LogEvents.None)
    {
        switch (e.EventType)
        {
        case LogEvents.Exception:
            if (!e.Message.Contains ("TIFFWarnings"))
            {
                 TriggerRemoteLoggingEvent (e.EventType, 
                     EZLogger.LoggingLevel.Note1, e.Message);
            }
            break;
        }
    }
}

В нем также говорится, что это исключение было добавлено в «ImageMagick.Net 7.4.5 Q8 AnyCPU» и не встречалось в более ранних версиях. У меня проблема с "ImageMagick.Net-Q16-AnyCPU v7.9.1". Я обновился до v7.10.0 и все еще имел ту же проблему.

Итак, мои вопросы:

  1. Какие версии ImageMagick имеют и не имеют этой функции?

  2. Какие шаги для передачи этого обработчика в мой код?

  3. Есть ли способ увеличить максимальное количество разрешенных предупреждений, и я могу просто поднять этот предел до чего-то настолько высокого, что я не ударю по нему?

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Эта проблема была исправлена ​​в Magick.NET 7.10.1.0: https://github.com/dlemstra/Magick.NET/releases/tag/7.10.1.0. Исключение TooManyExceptions (exception processing is suspended) больше не будет создаваться, поскольку оно было заменено предупреждением.

0 голосов
/ 10 января 2019

Какие версии ImageMagick имеют и не имеют этой функции?

Из changelog он был добавлен еще в версии 7.0.7-22. Обработка этой функции была дана в ответ на проект Google OSS-fuzz .

Есть ли способ увеличить максимальное количество разрешенных предупреждений, и я могу просто поднять этот предел до чего-то настолько высокого, что я не ударю по нему?

В настоящее время нет. Ограничение жестко закодировано MagickCore/exception.c как ...

#define MaxExceptionList 64

Но это с открытым исходным кодом, и довольно новая функция. Если вы опубликуете проблему в разделе «Ошибки» на доске объявлений , вы можете попросить разработчиков пересмотреть ограничение или разрешить некоторый атрибут ресурса в polices.xml контролировать пользователь. Также полезно представить реальный контрольный пример, и файл TIFF с предупреждениями более 64+ должен потребовать некоторого уровня проверки.

...