OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 01:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 18:30 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Александр Ильин писал(а):
Знать бы, что такого хорошего и полезного добавилось...
Могу преположить, что Ваши DLL (и мои тоже) теперь всегда будут на всякий случай ( :) ) импортировать дополнительные библиотеки. В пользу этой версии говорит и одинаковый прирост в 23КБ. Точно можно выяснить, если прогнать dll-ку через какой-нибудь PE-explorer. Особый интерес здесь представляют секции импорта и экспорта. Думаю, что различия в размере PE-файла из-за них.


Последний раз редактировалось igor Пятница, 30 Декабрь, 2011 18:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 18:32 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
igor писал(а):
Как и следовало ожидать, в основном (хоть и не во всём) изменения заключаются в расширении уже существующей системы.
Собственно, для меня эти расширения не актуальны. Я решил перейти на новую версию, потому что на официальном сайте заявлено, что в ней "bug fixes". С другой стороны, раз есть расширения, то есть и новые баги. :)
Я подозреваю, что в основном включение XDS-C и TSCP сыграло роль в распухании базы. ООП такое ООП.

Насчёт bugs fixed у меня есть подтверждения, я готовлю материал на эту тему. Например, больше не воспроизводится "type guard bug" - это когда при применении охраны типа к результату функции эта функция вызывалась дважды. Теперь на моём тестовом примере этого не происходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 18:38 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
igor писал(а):
Александр Ильин писал(а):
Знать бы, что такого хорошего и полезного добавилось...
Могу преположить, что Ваши DLL теперь всегда будут на всякий случай ( :) ) импортировать дополнительные библиотеки.
Если вернуть старый libxds.lib, то линкер ругается вот как:
Код:
Error (54): Name 'X2C_TRAP_INDEX_C' not found (referenced in  file ***.ob2)
Error (54): Name 'X2C_TRAP_NIL_C' not found (referenced in  file ***.ob2)
Error (54): Name 'X2C_ASSERT_FC' not found (referenced in  file ***.ob2)
Суффикс "C" подсказывает мне, что речь идёт о функциях, доставшихся нам вместе с XDS-C. Раньше ведь они назывались просто X2C_TRAP_INDEX, X2C_TRAP_NIL и X2C_ASSERT_F соответственно. В новой версии libxds.lib есть и старые имена функций, и новые. Неудивительно, что сам этот файл распух с 314 Кб до 746 Кб!

Интересно, есть ли какая-то опция, чтобы использовать старые функции (раз уж они по-прежнему есть в наличии)? Может быть, удастся вернуть размер dll-ок на прежний уровень. В diff'ах документации я видел, что появилось несколько новых опций компилятора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 18:41 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Александр Ильин писал(а):
Насчёт bugs fixed у меня есть подтверждения
Это хорошие новости :)
Что касается разбухания PE-файлов, то можно попробовать использовать старую версию компоновщика. Прям сейчас этим и займусь. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 18:43 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
В примерах появился интересный проект samples/mixed, который, как будто, демонстрирует проект, написанный совместно на Modula-2 и C. Или там два проекта, использующие общую часть исходников? я ещё не разбирался. В общем, добавление XDS-C может облегчить взаимодействие с сишными программами, что может быть весьма актуально. Надо посмотреть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 18:45 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
igor писал(а):
Что касается разбухания PE-файлов, то можно попробовать использовать старую версию компоновщика. Прям сейчас этим и займусь. :)
Обязательно напишите о результатах!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 18:50 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Александр Ильин писал(а):
igor писал(а):
Прям сейчас этим и займусь. :)
Обязательно напишите о результатах!

Со старой версией компоновщика (v2.6) прирост составил 107КБ против 111КБ с новым компоновщиком (v2.13.3). Ну, то есть сам компоновщик не слишком-то "виноват".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 19:05 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
igor писал(а):
Ну, то есть сам компоновщик не слишком-то "виноват".
Старый компоновщик ничего не знает про новые библиотечные расширения. Значит "зараза" :) прёт из объектных файлов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 19:07 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
igor писал(а):
igor писал(а):
Ну, то есть сам компоновщик не слишком-то "виноват".
Старый компоновщик ничего не знает про новые библиотечные расширения. Значит "зараза" :) прёт из объектных файлов.
Я так понимаю, что это ведь компилятор генерирует обращения к функциям типа X2C_ASSERT_FC при генерации кода стандартной функции ASSERT. И эти имена (их вызовы) зашивает в объектные файлы. Значит, надо копаться в настройках компиляции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 19:27 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
На всякий случай прогнал свой икзешничег через утилиту dumpbin.exe с ключами /imports и /exports. Никакого криминала не обнаружил. Экспорт, как и следовало ожидать, вообще пустой. А импорт только из KERNEL32.DLL и USER32.DLL. Ничего "левого".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 20:18 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Внутри компилятора строка "X2C_TRAP_NIL" без суффикса тоже не встречается, так что вряд ли есть такая опция компиляции.

Хекс-редактором поправил obj-файлы после компиляции: убрал суффиксы "C", поправил длины строк, добавил нулей для компенсации смещения, после чего скомпилировал WebEdit.dll новым компилятором/линкером XDS 2.60. Размер dll-файла после компиляции в XDS 2.51: 59'392; в XDS 2.60 с использованием старого libxds.lib (от 2.51) размер: 61'952, при использовании нового libxds.lib пропатченные объектники всё равно дают больший размер: 72'704.

Вывод: имя функции, с префиксом оно или без, роли не играет. Просто в новой либе больше кода под эти рантаймовые функции.

Дублирование имён внутри libxds.lib, скорее всего, сделано для совместимости с предыдущей версией.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 22:40 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Опробовал новый XDS на своих расчётах.

У меня 2 основных режима компиляции: проверочный (со всеми проверками без оптимизации) и рабочий (без проверок с оптимизацией). В проверочном режиме всё работает как и раньше. А вот в рабочем режиме почти сразу появляется floating overflow. Так что, кажется, в целом надёжность компилятора не слишком увеличилась :(

Я уже сталкивался с похожими floating overflow'ами в рабочем режиме (в проверочном они у меня не воспроизводятся) в версии 2.50 - они устраняются только танцами с бубном, если, конечно, не хочется считать в проверочном режиме (это в 1.5 раза медленнее).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Пятница, 30 Декабрь, 2011 23:14 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
А есть тестовый проект, на котором бы воспроизводилась ошибка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Суббота, 31 Декабрь, 2011 00:13 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Отчёт dumpbin.exe для проекта, собранного в XDS v2.51:
Код:
Microsoft (R) COFF/PE Dumper Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.
Dump of file xxxx.exe
File Type: EXECUTABLE IMAGE
  Summary
       1B000 .bss
        3000 .data
        1000 .debug
        1000 .idata
        2000 .reloc
       1B000 .text

Аналогичный отчёт для того же проекта, собранного в XDS v2.60:
Код:
Microsoft (R) COFF/PE Dumper Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.
Dump of file xxxx.exe
File Type: EXECUTABLE IMAGE
  Summary
       3B000 .bss
        4000 .data
        1000 .debug
        1000 .idata
        3000 .reloc
       1F000 .text


Как видно из отчётов, увеличилась секция инициализированных данных (.data), секция перемещаемых данных (.reloc) и собственно секция кода (.text). Размер секции отладки (.debug) и импорта из внешних библиотек (.idata) не изменился (по крайней мере в памяти, в файле мог и измениться). Секцию неинициализированных данных (.bss) в расчёт можно не принимать, так как её размер в файле всегда равен нулю.

По большому счёту я готов мириться с этим увеличением размера файла. А вот то обстоятельство, что исправлены ошибки, для меня важнее :)
Осталось разобраться что там с floating overflow.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Понедельник, 02 Январь, 2012 15:58 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Пожалуйста, попробуйте разобраться.

Во вложении моя (чуть модифицированная) программа.
На входе принимает файл V.txt - уже лежит в каталоге EXE,
куда программа будет компилироваться. Про режимы компиляции
Debug и Run читайте комментарии в проектном файле.

В режиме Run в XDS 2.51 всё работает, в XDS 2.60 beta почти сразу
вылетает real overflow, он не воспроизводится в режиме Debug.

При подготовке этого сообщения нашёлся ещё один "бубнотанцевый" баг:
если в файле Flow\fDynamicParticle.ob2 закомментировать строчки No. 50 или 57 (там стоят никчёмные, ничего не значащие операторы), то в режиме Run программа вылетает с сообщением invalid location. Это, опять-таки, не воспроизводится в отладочном режиме. Этот баг присутствует как в старой, так и в новой версиях XDS.

Ну как жить с такими багами :( ?

С уважением,
GH.


Вложения:
Source.rar [179.74 КБ]
Скачиваний: 318
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Вторник, 03 Январь, 2012 02:21 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
GameHunter писал(а):
Пожалуйста, попробуйте разобраться.
При подготовке этого сообщения нашёлся ещё один "бубнотанцевый" баг
Ну как жить с такими багами :( ?
Подобные ошибки кодогенератора встречались и мне, да только всё не удавалось создать минимальный проект для их воспроизведения. Решались они иной раз изменением текстовой константы в соседней строке. : )

Что там с real overflow я не знаю, а вот до invalid location я докопался с помощью IDA Pro и XD. Дело в том, что там генерируется PUSH, после чего из стека достаётся сохранённое значение указателя. Вот так это выглядит:
Код:
.text:00419130                 call    Space_NewFloatArray
.text:00419135                 mov     ecx, [esp+10h] ; Сюда не обращайте внимания
.text:00419139                 push    0 ; злополучный push
.text:0041913B                 mov     edx, [esp+1Ch]  ; Get local variable 'f' from stack
.text:0041913F                 push    0
.text:00419141                 mov     [edx], eax ; f.Vz := 'result of Space_NewFloatArray'
Команды PUSH - это уже задвигаются в стек параметры для следующего вызова Space.NewFloatArray. По адресу [esp+1Ch] находится значение указателя f, полученного ранее в результате выполнения NEW. Да только вот незачада: смещение 1Ch было бы правильным, если бы не был сделан перед этим "push 0". После выполнения push значение регистра ESP изменилось, и теперь правильное смещение = 20h. Соответственно, из стека достаётся не запомненное значение указателя, а какое-то постороннее значение (в данном случае = 1), что и приводит к ошибке доступа к памяти, аналогичной разыменованию нулевого указателя.

Если пропатчить exe-файл, заменив смещение 1Ch на 20h, то программа работает нормально и завершается в совершенно другом месте с real overflow, как от неё и ожидается : )

Вот знаю я это всё. И что мне теперь со всем этим делать? : )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Вторник, 03 Январь, 2012 02:34 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
По поводу real overflow могу сказать, что это исключение возникает скорее всего в результате выполнения инструкции fscale. Но в каком месте исходников - не знаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Вторник, 03 Январь, 2012 10:03 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
GameHunter писал(а):
Пожалуйста, попробуйте разобраться.
Во вложении моя (чуть модифицированная) программа.
Вроде, не все модули представлены:
Код:
* [Environment\SymThreads\SymThreads.ob2 18.09 F425]
* file open error: "Processes.sym" no such file

IMHO, начинать нужно с выделения минимального тестового проекта, на котором воспроизводится ошибка. Лучше Вас это никто не сделает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Вторник, 03 Январь, 2012 10:16 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Александр Ильин писал(а):
до invalid location я докопался с помощью IDA Pro и XD.
Респект и уважуха! :) . А XD что за инструмент, HxD что ли?

Александр Ильин писал(а):
Вот знаю я это всё. И что мне теперь со всем этим делать? : )
А вот это "mailto:support@excelsior-usa.com" не помогает решить проблему?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Вторник, 03 Январь, 2012 11:48 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Processes - стандартный модуль XDS'а. Странно что его у Вас нет...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB