Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Кто какие варианты решения проблемы знает у исключения (0x80004005): A generic error occurred in GDI+ ?

Поделитесь плз. Отметаем проблемы с Dispose, памятью, недоступности диска, прав доступа -- точно не оно, проверено. На одном серваке только ловится из десятка. Может кто сталкивался?
23 май 19, 22:51    [21892546]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Судя по тому, что это HRESULT, я думаю, что проблема где-то вообще на низком уровне. Я бы попробовал драйвер видео переустановить. Или попробовать на время поставить "Generic VGA driver" - посмотреть, будет ли и на нем эта ошибка.
23 май 19, 22:58    [21892549]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
fkthat,

ПО запускается на Windows Server 2012 R2, даже не знаю как это может быть связано с драйвером видео, сталкивался с таким?
23 май 19, 23:03    [21892550]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
fkthat
Member

Откуда:
Сообщений: 1163
hVostt
fkthat,

ПО запускается на Windows Server 2012 R2, даже не знаю как это может быть связано с драйвером видео, сталкивался с таким?


Не, не сталкивался. А как серверное ПО использует GDI+? Там что - какая-то обработка изображений на серваке?
23 май 19, 23:08    [21892554]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
fkthat
hVostt
fkthat,

ПО запускается на Windows Server 2012 R2, даже не знаю как это может быть связано с драйвером видео, сталкивался с таким?


Не, не сталкивался. А как серверное ПО использует GDI+? Там что - какая-то обработка изображений на серваке?


Генерация и обработка QR-кодов, это веб приложение на .NET Framework 4.7
В другом нашем ПО на ASP.NET Core таких проблем нет )
24 май 19, 09:01    [21892680]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
Изопропил
Member

Откуда:
Сообщений: 31186
hVostt,

На чем конкретно падает?
24 май 19, 09:31    [21892718]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4748
hVostt
Кто какие варианты решения проблемы знает у исключения (0x80004005): A generic error occurred in GDI+ ?

Что то куда то пытаешься сохранять?
На что то нет прав или какого то каталога не существует.
При чем может быть разрешающие правило и запрещающее, последнее будет иметь приоритет.
24 май 19, 09:31    [21892719]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4748
fkthat
Я бы попробовал драйвер видео переустановить.

А что такое "драйвер видео"?
24 май 19, 09:31    [21892721]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
ЕвгенийВ
Что то куда то пытаешься сохранять?
На что то нет прав или какого то каталога не существует.
При чем может быть разрешающие правило и запрещающее, последнее будет иметь приоритет.


Всё в памяти происходит, никакой работы с файлами и каталогами.

Изопропил
На чем конкретно падает?


        public static byte[] ToArray(this Image image)
        {
            using (var ms = new MemoryStream())
            {
                image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                return ms.ToArray();
            }
        }
24 май 19, 12:22    [21893018]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
fkthat
Member

Откуда:
Сообщений: 1163
hVostt,

Вообще странно. Может просто память битая? :))
24 май 19, 12:30    [21893021]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
fkthat
hVostt,

Вообще странно. Может просто память битая? :))


Тогда это была бы не единственная проблема ))
24 май 19, 12:48    [21893045]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
hVostt,
1. Стек при ошибке
2. Блок HDC \ видеопамяти при одновременном доступе
3. Потоки
24 май 19, 13:04    [21893070]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
fkthat
Member

Откуда:
Сообщений: 1163
hVostt,

Просто тогда вообще загадка, ибо, как я понимаю, приведенный код ничего кроме неких манипуляций с данными в памяти не делает, так что проблема тут точно не в драйверах, хотя он может, наверное, как-то к тому же DirectX обращаться. Там на всех серверах он одинаковый стоит (DirectX)?
24 май 19, 13:06    [21893074]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Petro123,

Совсем непонятно как тут видеокарта участвует :)
По стеку ничего не понятно, нужно профилировать, но пока такой возможности нет, поэтому и спрашиваю.
А что с потоками?
24 май 19, 13:36    [21893105]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
fkthat,

Именно. При чем работает на всех стендах предпродакшена, но не на продовом.
24 май 19, 13:36    [21893107]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4748
hVostt,
Есть возможность на том серваке дернуть https://docs.microsoft.com/ru-ru/dotnet/api/system.drawing.imaging.imagecodecinfo.getimagedecoders?view=netframework-4.8
от имени того, под кем работает asp.net?
24 май 19, 13:50    [21893119]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
ЕвгенийВ
hVostt,
Есть возможность на том серваке дернуть https://docs.microsoft.com/ru-ru/dotnet/api/system.drawing.imaging.imagecodecinfo.getimagedecoders?view=netframework-4.8
от имени того, под кем работает asp.net?


Есть, спасибо за наводку! Напишу как будут результаты.
24 май 19, 13:52    [21893121]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
hVostt,
Стек просто помог бы.
Необязательно видеокарта. HDC можно самому создать.
Тебе там виднее. Стека то нет.
...
Потоки это одновременный доступ к HDC.
.. Стек можно добавить путем правки кода. По хорошему он всегда на errors уровень должен в логах.
24 май 19, 13:53    [21893124]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
ЕвгенийВ,

+

{
  "Clsid": "557cf400-1a04-11d3-9a73-0000f81ef32e",
  "FormatID": "b96b3cab-0728-11d3-9d7b-0000f81ef32e",
  "CodecName": "Built-in BMP Codec",
  "DllName": null,
  "FormatDescription": "BMP",
  "FilenameExtension": "*.BMP;*.DIB;*.RLE",
  "MimeType": "image/bmp",
  "Flags": 65543,
  "Version": 1,
  "SignaturePatterns": [
    "Qk0="
  ],
  "SignatureMasks": [
    "//8="
  ]
}
{
  "Clsid": "557cf401-1a04-11d3-9a73-0000f81ef32e",
  "FormatID": "b96b3cae-0728-11d3-9d7b-0000f81ef32e",
  "CodecName": "Built-in JPEG Codec",
  "DllName": null,
  "FormatDescription": "JPEG",
  "FilenameExtension": "*.JPG;*.JPEG;*.JPE;*.JFIF",
  "MimeType": "image/jpeg",
  "Flags": 65543,
  "Version": 1,
  "SignaturePatterns": [
    "/9g="
  ],
  "SignatureMasks": [
    "//8="
  ]
}
{
  "Clsid": "557cf402-1a04-11d3-9a73-0000f81ef32e",
  "FormatID": "b96b3cb0-0728-11d3-9d7b-0000f81ef32e",
  "CodecName": "Built-in GIF Codec",
  "DllName": null,
  "FormatDescription": "GIF",
  "FilenameExtension": "*.GIF",
  "MimeType": "image/gif",
  "Flags": 65543,
  "Version": 1,
  "SignaturePatterns": [
    "R0lGODlh",
    "R0lGODdh"
  ],
  "SignatureMasks": [
    "////////",
    "////////"
  ]
}
{
  "Clsid": "557cf403-1a04-11d3-9a73-0000f81ef32e",
  "FormatID": "b96b3cac-0728-11d3-9d7b-0000f81ef32e",
  "CodecName": "Built-in EMF Codec",
  "DllName": null,
  "FormatDescription": "EMF",
  "FilenameExtension": "*.EMF",
  "MimeType": "image/x-emf",
  "Flags": 65542,
  "Version": 1,
  "SignaturePatterns": [
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBFTUY="
  ],
  "SignatureMasks": [
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8="
  ]
}
{
  "Clsid": "557cf404-1a04-11d3-9a73-0000f81ef32e",
  "FormatID": "b96b3cad-0728-11d3-9d7b-0000f81ef32e",
  "CodecName": "Built-in WMF Codec",
  "DllName": null,
  "FormatDescription": "WMF",
  "FilenameExtension": "*.WMF",
  "MimeType": "image/x-wmf",
  "Flags": 65542,
  "Version": 1,
  "SignaturePatterns": [
    "183Gmg=="
  ],
  "SignatureMasks": [
    "/////w=="
  ]
}
{
  "Clsid": "557cf405-1a04-11d3-9a73-0000f81ef32e",
  "FormatID": "b96b3cb1-0728-11d3-9d7b-0000f81ef32e",
  "CodecName": "Built-in TIFF Codec",
  "DllName": null,
  "FormatDescription": "TIFF",
  "FilenameExtension": "*.TIF;*.TIFF",
  "MimeType": "image/tiff",
  "Flags": 65543,
  "Version": 1,
  "SignaturePatterns": [
    "SUk=",
    "TU0="
  ],
  "SignatureMasks": [
    "//8=",
    "//8="
  ]
}
{
  "Clsid": "557cf406-1a04-11d3-9a73-0000f81ef32e",
  "FormatID": "b96b3caf-0728-11d3-9d7b-0000f81ef32e",
  "CodecName": "Built-in PNG Codec",
  "DllName": null,
  "FormatDescription": "PNG",
  "FilenameExtension": "*.PNG",
  "MimeType": "image/png",
  "Flags": 65543,
  "Version": 1,
  "SignaturePatterns": [
    "iVBORw0KGgo="
  ],
  "SignatureMasks": [
    "//////////8="
  ]
}
{
  "Clsid": "557cf407-1a04-11d3-9a73-0000f81ef32e",
  "FormatID": "b96b3cb5-0728-11d3-9d7b-0000f81ef32e",
  "CodecName": "Built-in ICO Codec",
  "DllName": null,
  "FormatDescription": "ICO",
  "FilenameExtension": "*.ICO",
  "MimeType": "image/x-icon",
  "Flags": 65542,
  "Version": 1,
  "SignaturePatterns": [
    "AAABAA=="
  ],
  "SignatureMasks": [
    "/////w=="
  ]
}

24 май 19, 17:41    [21893366]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4748
GDI+ дернулся, уже хорошо.
Я бы тупо в лоб сделал все вызовы gdi, которые есть в
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);, там их кот наплакал
и смотрел, кто ругнется
24 май 19, 18:43    [21893411]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
ЕвгенийВ,

Прогнали вызовы отдельно, вроде всё ок. Проблемный код работает на старом проекте под .NET 4.6, на ASP.NET WebAPI поверх OWIN, все вызовы асинхронные. Вроде это не должно быть проблемой, но информации по этому поводу пока найти не могу.
25 май 19, 00:21    [21893589]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
hVostt,
Стек лови. Там все есть.
25 май 19, 09:36    [21893643]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Я подозреваю, что если стек ексепшена поизучать, то падает на вызове вот этого:

[DllImport("gdiplus.dll", CharSet=CharSet.Unicode, ExactSpelling=true, SetLastError=true)]
internal static extern int GdipSaveImageToStream(HandleRef image, UnsafeNativeMethods.IStream stream, ref Guid classId, HandleRef encoderParams);
25 май 19, 10:45    [21893670]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
Малыхин Сергей
Member

Откуда: г. Курск
Сообщений: 717
Пальцем в небо но возможно старой ОС не хватает костылей что бегать за современный рунтаймом.
https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows
25 май 19, 23:57    [21893990]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Ошибка возникает только при работе с PNG в gdiplus.dll, проблема видимо в настройках реестра и апдейтах. Решилось заменой ОС на стенде на чистую установку со всеми апдейтами. Ещё один аргумент в пользу контейнеризации :)

Коллеги, всем спасибо за помощь!
26 май 19, 03:15    [21894005]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
hVostt
аргумент
нееее)
На тестовой можно и без всякими другими методами отката до чистого состояния.
Та же виртуалка например.
26 май 19, 09:52    [21894029]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
Изопропил
Member

Откуда:
Сообщений: 31186
hVostt
Ошибка возникает только при работе с PNG в gdiplus.dll, проблема видимо в настройках реестра и апдейтах. Решилось заменой ОС на стенде на чистую установку со всеми апдейтами. Ещё один аргумент в пользу контейнеризации :)

Коллеги, всем спасибо за помощь!

Gdi+ нынче использует внешние кодеки (WIC) со всеми вытекающими
26 май 19, 11:02    [21894038]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Petro123
hVostt
аргумент
нееее)
На тестовой можно и без всякими другими методами отката до чистого состояния.
Та же виртуалка например.


Это слишком дорого, если рабочих нод сотни.
26 май 19, 16:31    [21894171]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Ещё немного покопавшись, нашёл, что System.Drawing не рекомендуется использовать в службах или ASP.NET приложениях: https://docs.microsoft.com/en-us/dotnet/api/system.drawing?redirectedfrom=MSDN&view=netframework-4.8 (в самом низу ремарка). Хотя у меня никогда с этим проблем не было, лучше следовать данной рекомендации.
26 май 19, 20:03    [21894239]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5011
hVostt
Ещё немного покопавшись, нашёл, что System.Drawing не рекомендуется использовать в службах или ASP.NET приложениях: https://docs.microsoft.com/en-us/dotnet/api/system.drawing?redirectedfrom=MSDN&view=netframework-4.8 (в самом низу ремарка). Хотя у меня никогда с этим проблем не было, лучше следовать данной рекомендации.

Интересно, давно эта ремарка появилась? А то есть куча контор, которые делают продукты именно для серверных решений, продают эти продукты за вполне хорошие деньги (вот, например) - и, видимо, ни сном, ни духом про такую особенность. У сборок того же вышеупомянутого аккусофта System.Drawing есть в референсах, и классы из него используются внутри сборки, это проверено.
27 май 19, 07:29    [21894369]     Ответить | Цитировать Сообщить модератору
 Re: A generic error occurred in GDI+  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Сон Веры Павловны
Интересно, давно эта ремарка появилась? А то есть куча контор, которые делают продукты именно для серверных решений, продают эти продукты за вполне хорошие деньги (вот, например) - и, видимо, ни сном, ни духом про такую особенность. У сборок того же вышеупомянутого аккусофта System.Drawing есть в референсах, и классы из него используются внутри сборки, это проверено.


Сам подивился :)
28 май 19, 21:36    [21896079]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / WinForms, .Net Framework Ответить