Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dziwna sprawa - bez optimize program nie działa

29 views
Skip to first unread message

Miroo

unread,
May 19, 2014, 2:58:25 AM5/19/14
to
Witam
Odziedziczyłem pewną aplikację desktopową. Ponieważ pojawiła się taka
potrzeba (w sumie najwyższy czas) przestawiłem aplikację z .NET 2.0 na
4.0. I pojawił się problem.
Aplikacja działa bez problemu z poziomu VS2010, działa bez problemu z
exe, gdy skompiluje się ją z flagą "Optimize code". Natomiast wywala się
przed pokazaniem formatki logowania, gdy skompiluje się ją bez tej
flagi. Aplikacja jest kompilowana z targetem x86, ponieważ korzysta z
COMów 32 bitowych. Gdy się ją skompiluje z targetem Any CPU - działa.

Kod wyjątku: 0xc0000409 (wszystko mówiące "unknown exception")

Próbowałem debugować na piechotę i wyszło na to, że błąd pojawiał się
podczas korzystania z ResourceManagera (wczytywanie ikonek do
przycisków). Po zakomentowaniu tego kodu wysypało się przy przypisywaniu
DataGridView.DataSource. Formatki bez DataGridView pokazywały się.

Aplikacja korzysta z kilku bibliotek skompilowanych dla NET2.0, do
których nie mam źródeł.

Oczywiście mogę włączyć flagę "optimize" i udawać, że jest wszystko w
porządku, ale wolałbym jednak namierzyć przyczynę problemu. Niestety
pomysły mi się skończyły. Może grupowicze coś doradzą?

Pozdrawiam

dee

unread,
May 19, 2014, 4:42:14 PM5/19/14
to

Miroo wrote:
> Witam
> Odziedziczyłem pewną aplikację desktopową. Ponieważ pojawiła się taka
> potrzeba (w sumie najwyższy czas) przestawiłem aplikację z .NET 2.0 na
> 4.0. I pojawił się problem.
> Aplikacja działa bez problemu z poziomu VS2010, działa bez problemu z
> exe, gdy skompiluje się ją z flagą "Optimize code". Natomiast wywala się
> przed pokazaniem formatki logowania, gdy skompiluje się ją bez tej
> flagi. Aplikacja jest kompilowana z targetem x86, ponieważ korzysta z
> COMów 32 bitowych. Gdy się ją skompiluje z targetem Any CPU - działa.
>
> Kod wyjątku: 0xc0000409 (wszystko mówiące "unknown exception")

0xc0000409 = STATUS_STACK_BUFFER_OVERRUN
Coś pisze po nieswojej pamięci (n.p. wrzuca za dużo).

Jak jest zrealizowana interakcja z COMami? Custom C# wrappers z unsafe
code? - może gdzieś źle ustawiane są rozmiary przekazywanych
struktur/buforów?

>
> Próbowałem debugować na piechotę i wyszło na to, że błąd pojawiał się
> podczas korzystania z ResourceManagera (wczytywanie ikonek do
> przycisków). Po zakomentowaniu tego kodu wysypało się przy przypisywaniu
> DataGridView.DataSource. Formatki bez DataGridView pokazywały się.
>
> Aplikacja korzysta z kilku bibliotek skompilowanych dla NET2.0, do
> których nie mam źródeł.
>
> Oczywiście mogę włączyć flagę "optimize" i udawać, że jest wszystko w
> porządku, ale wolałbym jednak namierzyć przyczynę problemu. Niestety
> pomysły mi się skończyły. Może grupowicze coś doradzą?
>
> Pozdrawiam

--
dee

Miroo

unread,
May 20, 2014, 3:24:28 AM5/20/14
to
W dniu 2014-05-19 22:42, dee pisze:
>
> Miroo wrote:
>> Witam
>> Odziedziczyłem pewną aplikację desktopową. Ponieważ pojawiła się taka
>> potrzeba (w sumie najwyższy czas) przestawiłem aplikację z .NET 2.0 na
>> 4.0. I pojawił się problem.
>> Aplikacja działa bez problemu z poziomu VS2010, działa bez problemu z
>> exe, gdy skompiluje się ją z flagą "Optimize code". Natomiast wywala się
>> przed pokazaniem formatki logowania, gdy skompiluje się ją bez tej
>> flagi. Aplikacja jest kompilowana z targetem x86, ponieważ korzysta z
>> COMów 32 bitowych. Gdy się ją skompiluje z targetem Any CPU - działa.
>>
>> Kod wyjątku: 0xc0000409 (wszystko mówiące "unknown exception")
>
> 0xc0000409 = STATUS_STACK_BUFFER_OVERRUN
> Coś pisze po nieswojej pamięci (n.p. wrzuca za dużo).
>
> Jak jest zrealizowana interakcja z COMami? Custom C# wrappers z unsafe
> code? - może gdzieś źle ustawiane są rozmiary przekazywanych
> struktur/buforów?

Z COMami współpracuje sporadycznie, na żądanie. Błąd występuje bez
wywoływania COMów.

Odrzuciłbym też lokalne problemy z
systemem/frameworkiem/VS/konfiguracją, ponieważ u kolegi również się
wykłada.

Aha, błąd jest zgłaszany w module clr.dll, nie da się go przechwycić w
try/catch - aplikacja się po prostu wykłada.

Pozdrawiam

dee

unread,
May 29, 2014, 4:08:56 PM5/29/14
to
Nie mam pojęcia co może być problemem bez dostępu do kodu niestety...


--
dee

0 new messages