Re[4]: исключения+ дампы = ловля на живца
От: abibok  
Дата: 15.07.13 08:05
Оценка:
А>Да, вы видим, чтото типа
А>mscorlib_ni+0x2f2bbb
А>mscorlib_ni+0x3675d1
А>mscorlib_ni+0x36740f

Отключите JIT. Убедитесь, что у вас есть CLR reference sources и правильные pdb. Это можно на сайте микрософта взять.

А>Причем бесит то — что почему то нашей библиотеки ни разу ни в одном стектрейсе не было видно.


Потому что стек у вас неправильный. А неправильный он потому что сохраняете дамп неправильно. Без контекста исключения. Вы может быть даже не в тот thread смотрите. А еще managed дампу флаги нужны другие, лучше всего сохранять все по максимуму, минидампом отделаться не получится, потому что managed heap.

А>Так что чем он ТАК принципиально отличается от WinDBG — что вы предлагаете юзать его при отладке

А>managed кода?

В вопросах сложной отладки C++, а особенно взаимодействия C++ и C#, отладчик студии может не потянуть. А windbg — сила.
Re[4]: исключения+ дампы = ловля на живца
От: breee breee  
Дата: 15.07.13 08:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Нет — WinDBG даже и не думали юзать — ибо на кой ляд тогда в купленной студии существует свой

А>дебаггер? С С++ кодом, что нам надо — он отлично справляется. И с дампами кода на основе С++ тоже.
А>Так что чем он ТАК принципиально отличается от WinDBG — что вы предлагаете юзать его при отладке
А>managed кода?

При открытии дампа в VS у вас есть кнопка "Debug with Mixed"? Или только "Debug with Native Only"?
Какую версию .NET используете?
Re[5]: исключения+ дампы = ловля на живца
От: Аноним  
Дата: 15.07.13 09:33
Оценка:
Здравствуйте, breee breee, Вы писали:

BB>Здравствуйте, Аноним, Вы писали:


А>>Нет — WinDBG даже и не думали юзать — ибо на кой ляд тогда в купленной студии существует свой

А>>дебаггер? С С++ кодом, что нам надо — он отлично справляется. И с дампами кода на основе С++ тоже.
А>>Так что чем он ТАК принципиально отличается от WinDBG — что вы предлагаете юзать его при отладке
А>>managed кода?

BB>При открытии дампа в VS у вас есть кнопка "Debug with Mixed"? Или только "Debug with Native Only"?

BB>Какую версию .NET используете?

Debug with Native Only.
На всех компах в офисе стоит 4. Она же должна стоять и на машинах заказчика — ибо все проги ему были
выданы. тут этот момент мы проверить не можем — просто верим ему.
Но есть мини подозрение — ибо при открытии дампа в студии мы видим строку
Сведения о системе — версия среды исполнения — 2.0
WTF?
по идее такого быть не должно.
Re[6]: исключения+ дампы = ловля на живца
От: breee breee  
Дата: 15.07.13 09:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Debug with Native Only.

А>На всех компах в офисе стоит 4. Она же должна стоять и на машинах заказчика — ибо все проги ему были
А>выданы. тут этот момент мы проверить не можем — просто верим ему.
А>Но есть мини подозрение — ибо при открытии дампа в студии мы видим строку
А>Сведения о системе — версия среды исполнения — 2.0
А>WTF?
А>по идее такого быть не должно.

Версия CLR 2.0 соответствует .NET версий 2.0, 3.0 и 3.5, но не .NET 4.0. Mixed-mode debugging дампов в студии поддерживается только для .NET 4.0+. Скорее всего поэтому вы не можете посмотреть managed-стеки.
Re[7]: исключения+ дампы = ловля на живца
От: Аноним  
Дата: 15.07.13 09:55
Оценка:
Здравствуйте, breee breee, Вы писали:

BB>Здравствуйте, Аноним, Вы писали:


А>>Debug with Native Only.

А>>На всех компах в офисе стоит 4. Она же должна стоять и на машинах заказчика — ибо все проги ему были
А>>выданы. тут этот момент мы проверить не можем — просто верим ему.
А>>Но есть мини подозрение — ибо при открытии дампа в студии мы видим строку
А>>Сведения о системе — версия среды исполнения — 2.0
А>>WTF?
А>>по идее такого быть не должно.

BB>Версия CLR 2.0 соответствует .NET версий 2.0, 3.0 и 3.5, но не .NET 4.0. Mixed-mode debugging дампов в студии поддерживается только для .NET 4.0+. Скорее всего поэтому вы не можете посмотреть managed-стеки.


но мы же точно ставили дотнет 4 версии. КАК тогда мы могли получить CLR 2.0?

может в студии для дотнета надо спецопции включать? мыж ее тока под С++ затачивали...
Re[8]: исключения+ дампы = ловля на живца
От: breee breee  
Дата: 15.07.13 10:01
Оценка:
Здравствуйте, Аноним, Вы писали:

BB>>Версия CLR 2.0 соответствует .NET версий 2.0, 3.0 и 3.5, но не .NET 4.0. Mixed-mode debugging дампов в студии поддерживается только для .NET 4.0+. Скорее всего поэтому вы не можете посмотреть managed-стеки.


А>но мы же точно ставили дотнет 4 версии. КАК тогда мы могли получить CLR 2.0?


А>может в студии для дотнета надо спецопции включать? мыж ее тока под С++ затачивали...


Но дамп-то взят не с ваших машин, я правильно понял? Возможно, заказчик не установил .NET 4.0, а использует более старую версию, оттого и падения и до вашей библиотеки дело не доходит.
В студии, при открытии дампа в списке модулей, какой версии модули mscoree.dll и mscorlib.ni.dll?
Re[9]: исключения+ дампы = ловля на живца
От: Аноним  
Дата: 15.07.13 10:20
Оценка:
Здравствуйте, breee breee, Вы писали:

BB>Здравствуйте, Аноним, Вы писали:


BB>>>Версия CLR 2.0 соответствует .NET версий 2.0, 3.0 и 3.5, но не .NET 4.0. Mixed-mode debugging дампов в студии поддерживается только для .NET 4.0+. Скорее всего поэтому вы не можете посмотреть managed-стеки.


А>>но мы же точно ставили дотнет 4 версии. КАК тогда мы могли получить CLR 2.0?


А>>может в студии для дотнета надо спецопции включать? мыж ее тока под С++ затачивали...


BB>Но дамп-то взят не с ваших машин, я правильно понял? Возможно, заказчик не установил .NET 4.0, а использует более старую версию, оттого и падения и до вашей библиотеки дело не доходит.

BB>В студии, при открытии дампа в списке модулей, какой версии модули mscoree.dll и mscorlib.ni.dll?

хренотень какая то... mscoree.dll — 4.0. mscorlib.ni.dll — 2.0. mscorjit.dll — 4.0 и вот так вот чередование идет....
Да ну как такое возможно? что это за тупейшие грабли?
Re[10]: исключения+ дампы = ловля на живца
От: breee breee  
Дата: 15.07.13 10:33
Оценка:
BB>>Но дамп-то взят не с ваших машин, я правильно понял? Возможно, заказчик не установил .NET 4.0, а использует более старую версию, оттого и падения и до вашей библиотеки дело не доходит.
BB>>В студии, при открытии дампа в списке модулей, какой версии модули mscoree.dll и mscorlib.ni.dll?

А>хренотень какая то... mscoree.dll — 4.0. mscorlib.ni.dll — 2.0. mscorjit.dll — 4.0 и вот так вот чередование идет....

А>Да ну как такое возможно? что это за тупейшие грабли?

Это выглядит как будто у них установлен 4.0, но ваша программа просит версию ниже.
У вас в свойствах C#-проекта точно Target framework выставлен .NET Framework 4.0 (а также либа требует эту версию)?
Re[11]: исключения+ дампы = ловля на живца
От: Аноним  
Дата: 15.07.13 11:13
Оценка:
Здравствуйте, breee breee, Вы писали:

BB>>>Но дамп-то взят не с ваших машин, я правильно понял? Возможно, заказчик не установил .NET 4.0, а использует более старую версию, оттого и падения и до вашей библиотеки дело не доходит.

BB>>>В студии, при открытии дампа в списке модулей, какой версии модули mscoree.dll и mscorlib.ni.dll?

А>>хренотень какая то... mscoree.dll — 4.0. mscorlib.ni.dll — 2.0. mscorjit.dll — 4.0 и вот так вот чередование идет....

А>>Да ну как такое возможно? что это за тупейшие грабли?

BB>Это выглядит как будто у них установлен 4.0, но ваша программа просит версию ниже.

BB>У вас в свойствах C#-проекта точно Target framework выставлен .NET Framework 4.0 (а также либа требует эту версию)?

в свойствах точно выставлено. ну а уж требует ли либа при старте этот 4 нет или нет — не понятно.
по идее она не должна подгружаться, если не находит подходящего CLR... но эт в теории...
Re[12]: исключения+ дампы = ловля на живца
От: breee breee  
Дата: 15.07.13 11:30
Оценка:
А>в свойствах точно выставлено. ну а уж требует ли либа при старте этот 4 нет или нет — не понятно.
А>по идее она не должна подгружаться, если не находит подходящего CLR... но эт в теории...

Можно узнать при помощи такой команды:
ildasm.exe library.dll /metadata[=MDHEADER] /text /noil

Вывод:
// ================================= M E T A I N F O ================================================

// ===========================================================
// Metadata section: 0x424a5342, version: 1.1, extra: 0, version len: 12, version: v4.0.30319
//            flags: 0x00, streams: 5
...
Re[13]: исключения+ дампы = ловля на живца
От: Аноним  
Дата: 15.07.13 11:54
Оценка: -1 :)
Здравствуйте, breee breee, Вы писали:

А>>в свойствах точно выставлено. ну а уж требует ли либа при старте этот 4 нет или нет — не понятно.

А>>по идее она не должна подгружаться, если не находит подходящего CLR... но эт в теории...

BB>Можно узнать при помощи такой команды:

BB>
BB>ildasm.exe library.dll /metadata[=MDHEADER] /text /noil
BB>

BB>Вывод:
BB>
BB>// ================================= M E T A I N F O ================================================

BB>// ===========================================================
BB>// Metadata section: 0x424a5342, version: 1.1, extra: 0, version len: 12, version: v4.0.30319
BB>//            flags: 0x00, streams: 5
BB>...
BB>


да, все так и есть. круто, да? таких глюков по теории и быть то не должно. но они есть....
не жизнь, а рассадник бермудских треугольников))
Re[14]: исключения+ дампы = ловля на живца
От: drol  
Дата: 15.07.13 12:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>таких глюков по теории и быть то не должно. но они есть....


Это Вам кажется, бо Вы теорией не владеете.

CLR всегда поддерживала side-by-side исполнение для обычного managed-кода. А с 4.0 поддерживает сию фичу и для managed COM-компонент. Теперь оные по-умолчанию запускаются в той версии CLR, для которой были собраны. В независимости от того, была ли загружена в процесс другая версия CLR.

Так что иметь две версии CLR в одном процессе — тривиально.
Re[15]: исключения+ дампы = ловля на живца
От: Аноним  
Дата: 15.07.13 15:03
Оценка:
Здравствуйте, drol, Вы писали:

D>Здравствуйте, Аноним, Вы писали:


А>>таких глюков по теории и быть то не должно. но они есть....


D>Это Вам кажется, бо Вы теорией не владеете.


D>CLR всегда поддерживала side-by-side исполнение для обычного managed-кода. А с 4.0 поддерживает сию фичу и для managed COM-компонент. Теперь оные по-умолчанию запускаются в той версии CLR, для которой были собраны. В независимости от того, была ли загружена в процесс другая версия CLR.


D>Так что иметь две версии CLR в одном процессе — тривиально.


т.е. независимо от того, что либу собрали с жестким условием — работать тока с версией 4.0 — в реальности она может запуститься и под 2.0?
по вашей цитате "запускаются в той версии CLR, для которой были собраны" — но собрано то было под и для 4.0. Что же она с компонентами 2.0 то работает?
Re[16]: исключения+ дампы = ловля на живца
От: drol  
Дата: 15.07.13 15:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>т.е. независимо от того, что либу собрали с жестким условием — работать тока с версией 4.0 — в реальности она может запуститься и под 2.0?


И как Вы умудрились из моего постинга сделать такой вывод

А>по вашей цитате "запускаются в той версии CLR, для которой были собраны" — но собрано то было под и для 4.0. Что же она с компонентами 2.0 то работает?


С чего Вы решили, что это именно Ваша компонента работает в CLR 2.0 ?
Re[17]: исключения+ дампы = ловля на живца
От: Аноним  
Дата: 16.07.13 07:55
Оценка:
Здравствуйте, drol, Вы писали:

D>Здравствуйте, Аноним, Вы писали:


А>>т.е. независимо от того, что либу собрали с жестким условием — работать тока с версией 4.0 — в реальности она может запуститься и под 2.0?


D>И как Вы умудрились из моего постинга сделать такой вывод

дык ну под не понятен до конца был пост — поэтому я не вывод сделал(и откуда Вы вывод сделали, что эт я вывод сделал ) — а вопрос задал,
мол вот так что ли понимать Ваши слова надо? Если не так — проясните.

А>>по вашей цитате "запускаются в той версии CLR, для которой были собраны" — но собрано то было под и для 4.0. Что же она с компонентами 2.0 то работает?


D>С чего Вы решили, что это именно Ваша компонента работает в CLR 2.0 ?


В нашей проге более нет ничегошеньки дотнетовского. И если я сделал дамп при падении и в дампе я нахожу сведения о том, что использовался CLR 2.0
и вижу модули подгруженные для дотнета 2 и 4, то для какого же компонента он тогда мог использоваться? Или дотнет во все процессы проникает — как вирус?
И упоминания о нем можно просто вот в любом дампе для любой проги найти?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.