информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
В map-файле есть длиинная последовательность вида 15.07.08 10:00  Число просмотров: 1592
Автор: Ustin <Ustin> Статус: Elderman
Отредактировано 15.07.08 10:06  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
> Тебе надо просто взять *.map, для которого у тебя есть дамп
> и найти в нем последнюю функцию, которая далее вызывает
> EnumFontFamiliesEx. Для того дампа, который ты выложил –
> вызов идет с адреса “buh+0x60cdbe”. Т.е. в файле *.map надо
> найти самое близкое значение, меньшее чем 60cdbe. Это и
> будет функция, в которой все падает.
В map-файле есть длиинная последовательность вида
  Address             Publics by Name
 0001:00AC3E44       AAMake..TAAMakeForm
 0004:0000B498       AAMake.AAMakeForm
...

---
, а в конце написано Program entry point at 0002:00021748
Как соотнести “buh+0x60cdbe” с 0001:00AC3E44? Адресов порядка 60cс00 - 60ce00 в .map не нашёл...

>
> В-третьих. Сдается мне, что здесь - даже и без *.map файла
> - все понятно.
> Ваша программа вызывает системную функцию
> EnumFontFamiliesEx. Одним из параметов EnumFontFamiliesEx
> является callback-функция (функция обратного вызова; т.е,
> программист сам эту функцию не вызывает, она вызывается
> системой Windows). И эта callback-функция у вас написана с
> ошибкой. Возможно, в ней не проверяются входные параметры.
> Или она не обьявлена как экпортируемая. Или она обьявлена
> как fastcall. Или она пишет в область памяти, которая не
> проинициализирована. Или еще что-нибудь.
В программе используется всякая дрянь типа DeveloperExpress и FastReport, боюсь что им вызов EnumFont* необходим...
> Что надо сделать:
> 1) На всякий случай, я бы собрал еще несколько дампов,
> чтобы убедиться –
> что падает именно здесь.
Убедился - падает именно здесь на разном железе на Win2k3 Standart + TS
> 2) Далее, надо сказать разработчикам – что программа падает
> при вызове EnumFontFamiliesEx. Обычно мест, где эта функция
> вызывается немного, максимум два-три. Пусть самым
> тщательным образом проверят все эти вызовы.
Разработчики занимаются логикой :) и на винде не пишут, потому как "долго" и, сильно подозреваю, не умеют. Этот падёж приходится решать, так как народу на TS становится больше и глюк начинает проявляться чаще. Откатить версию до состояния "работает" возможности нет, т.к. код не очень managed + каждый божий день делается новая логика, в общем случае не совместимая с предыдущей

> Как это можно исправить:
> a) Можно заменить EnumFontFamiliesEx на более простой
> аналог EnumFontFamilies;
Честно говоря, беглый просмотр исходников компонентов показал 11 мест только в исходниках компонентов, есть ещё несколько вхождений в .dcu (delphi compiled unit, получается после компиляции модулей, то из чего потом exe линкуется - бывает что компоненты распространяются не в виде исходных текстов, а в виде таких вот dcu). Поэтому, возможно, есть смысл поставить "пустышку" немного выше...

> Удачи!
<beginners> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach