|
Access violation при выполнении внешней компоненты. NativeAPI, c++ | ☑ | ||
---|---|---|---|---|
0
dmitrriykriv
10.11.14
✎
11:47
|
Писал я внешнюю компоненту на с++ для УПП, все работает прекрасно, пока тестирую на маленькой конфе, но стоит подключить на самой УПП при выходе из функций ( в отладчике на последней скобке) вылетает с той самой ошибкой 0xC0000005: Access violation. Проверял на обращения к NULL - все чисто, судя по тому, что на мелкой конфе все работает, с компонентой все более-менее в норме, утечек памяти нет. Уже не знаю что делать, подскажите, пожалуйста
|
|||
1
vde69
10.11.14
✎
11:51
|
сталкивался...
скорее всего в компоненте при выходе есть открытые дескрипторы, вероятнее всего не разрушены какие-то обьекты или не освободил память |
|||
2
dmitrriykriv
10.11.14
✎
12:03
|
Сейчас посмотрю еще раз... но тогда не понятно, почему на одной конфигурации работает, а на другой нет
|
|||
3
Мутабор
10.11.14
✎
12:03
|
(2) На одном компе или разных?
|
|||
4
dmitrriykriv
10.11.14
✎
12:04
|
На одном
|
|||
5
dmitrriykriv
10.11.14
✎
13:54
|
Добавил разрушение окошка(почти все функции работают с использованием механизма оконных сообщений) в деструктор класса, теперь ошибок нет, но функции не всегда отрабатывают:( Видимо, 1С-ка запускает деструктор когда попало, а не только во время уничтожения компоненты... Хотя в отладке этого не видно
|
|||
6
vde69
10.11.14
✎
14:05
|
(5) читай про совместное использование дискрипторов
|
|||
7
vde69
10.11.14
✎
14:09
|
(2) причина в сборщике мусора 1с, он работает в зависимости от загрузки, по этому на разных базах он работает по разному....
то есть разрушение фактическое обьекта DCOM происходит в разное время |
|||
8
Serginio1
10.11.14
✎
14:38
|
(7) Это когда в 1С сборщик мусора появился? Разве там не подсчет ссылок?
|
|||
9
vde69
10.11.14
✎
14:43
|
(8) я не являюсь истиной в последней инстанции, но для себя предстваляю механизм работы 1с (еще с версии 7.5) именно через сборщик мусора, этим обьясняется много фичей 1с, типа подключаем таймер к процедуре формы и закрываем форму, но фантомный код закрытой формы будет выполнятся все равно...
|
|||
10
Кирпич
10.11.14
✎
15:02
|
А 1С фантомный код еще вершит,
но пали руки. И стайкою наискосок ходят запахи и звуки. |
|||
11
Кирпич
10.11.14
✎
15:02
|
уходят
|
|||
12
Serginio1
10.11.14
✎
15:06
|
(9) Судя по работе с COM объектами там элементарный подсчет ссылок. orefkof выходи
|
|||
13
Кирпич
10.11.14
✎
15:08
|
Да какая разница есть там подсчет ссылок или нету. Автор тупо понашлёпал ошибок с указателями и все дела.
|
|||
14
vde69
10.11.14
✎
15:12
|
(12) я-бы так не сказал...
ты вкурсе, что можно подключить обработчик 1с к событию в COM обьекте, и наоборот? так, что я думаю, там немного сложнее все, по тому как дескрептрор ресурса (твой счетчик ссылок) может размещатся как в памяти 1с так и в памяти COM обекта, которая не всегда имет прямой доступ по адресации, и вообще могут быть в разных сегментах. |
|||
15
Serginio1
10.11.14
✎
15:37
|
Знаю при этом, что бы от циклических ссылок избавиться нужно отписываться. Так в COM и есть подсчет ссылок через методы интерфейса IUnknown
http://rod.ucoz.net/index/0-19 |
|||
16
DmitrO
10.11.14
✎
15:48
|
Нет там сборщика мусора, это вообще другая технология управления памятью. В 1С как и в COM простой подсчет ссылок.
|
|||
17
Кирпич
10.11.14
✎
15:59
|
(16) есть там сборщик мусора. vde69 его лично выдумал. и фантомный код еще есть. он лично видел.
|
|||
18
H A D G E H O G s
10.11.14
✎
16:14
|
(0) Хуки, переопределения оконных процедур есть? А если найду?
|
|||
19
H A D G E H O G s
10.11.14
✎
16:14
|
Хотя, сплюснутый язык, хер я че там найду.
|
|||
20
Кирпич
10.11.14
✎
16:16
|
(19) если глючит, значит есть. можно и не искать.
|
|||
21
dmitrriykriv
11.11.14
✎
10:27
|
Был один дескриптор открытый все-таки... А хуков нет
|
|||
22
Кирпич
11.11.14
✎
10:39
|
(21) продолжай искать
|
|||
23
dmitrriykriv
11.11.14
✎
10:43
|
(22) Сейчас уже не крашится, стабильно работает
|
|||
24
dmitrriykriv
11.11.14
✎
10:52
|
Интересно, почему все-таки на маленькой конфигурации все работало и до исправления косяка?
|
|||
25
vde69
11.11.14
✎
11:06
|
(24) по тому, что памяти свободной навалом. А на УПП была попытка использовать "свободную" память по факту занятую обьектом компонеты
|
|||
26
Кирпич
11.11.14
✎
11:08
|
(24) У тебя же есть все данные. И обе конфигурации и твоё нетленное творение на С++. Вот сиди и анализируй. Зачем тебе чьи то догадки?
И вообще, надо ветку вовремя закрывать. А то набегут специалисты по ядерному оружию и экономике. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |