Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Ошибки программы на 2 Корке


Автор: Canada 25.4.2009, 03:15
Программа моя вообще не работает на 2 ядрах, проверял - 100%. Это виноват Делфи 7? Т.е. запускаю на 1 ядерных пнях-селеронах - все гуд. Запускаю на 2-х ядрах - косяки. Отключал 1 ядро на Корке - никак. Обновлятся до 2009 надо?

Автор: skyboy 25.4.2009, 09:32
Цитата(Canada @  25.4.2009,  02:15 Найти цитируемый пост)
вообще не работает

не запускается и ничего не сообщает? выбрасывает сообщение про Exception? пишет в системный журнал о "неисправимой ошибке"? что?

Автор: kami 25.4.2009, 12:44
Цитата(Canada @  25.4.2009,  03:15 Найти цитируемый пост)
Это виноват Делфи 7?

Я работаю в D7.
На машинах с одним ядром и с двумя. Глюков нет.

Вывод - глюки в коде.

Чтобы понять, что за глюки - ответь на вопросы skyboy.

Автор: Canada 25.4.2009, 16:11
Цитата

не запускается и ничего не сообщает? выбрасывает сообщение про Ехцептион? пишет в системный журнал о "неисправимой ошибке"? что?


Нет, вы меня не правильно поняли. Ни Эксепшенов ничего более подобного , т.е. ошибок работы с системой нет. Есть ошибки связанные с самой программой. Программа как будто бы перескакивает через куски кода, или выполняет его быстрее чем получены нужные результаты. Так, например, у меня там постоянно ошибка, что данные, переданные в переменную I не являются числом. Т.е. в программе есть обработка текста, потом, например, текст "1000" путем StrToInt превращается в число 1000, с которым идут операции и математические  действия дальше. Но тут начинают лететь в сообщениях об ошибках вообще какие-то левые числа, левые данные. Т.е. например что "10=1000" не является integer, ясное дело, что надпись "10=1000" это не число, хотя бы из за знака "=". Откуда это все? Т.е. вылетают в ошибках, как бы промежуточные результаты вычислений, которых на данном месте быть не должно вообще. Или программа не дождавшись получения результатов, начала работать дальше. И такое только на 2 CoreDuo. На Пнях-Селеронах такого нет.

Автор: kami 25.4.2009, 16:29
Цитата(Canada @  25.4.2009,  16:11 Найти цитируемый пост)
Программа как будто бы перескакивает через куски кода, или выполняет его быстрее чем получены нужные результаты.

Этого не может быть. Даже с учетом всех оптимизаций и работы в несколько конвееров команд, выполняемых процессором.

Работа производится в одном потоке, или заводятся дополнительные?

Автор: CodeMonkey 25.4.2009, 18:06
Это значит, что у вас в коде косяки. Просто на других машинах из-за каких-либо особенностей вы эти косяки не заметили. Вот и всё. Поэтому нужно не на процессор пенять и не версии Delphi подбирать, а привести код и тогда можно будет разобраться, где у вас ошибка.
А ещё лучше - сами понавставляйте в программу логгинг - всё и будет видно как на ладони: кто, где, когда и зачем.

Автор: kami 25.4.2009, 18:35
Canada, не в обиду будет сказано, просто навеяло своими вчерашними мыслями после "бодания" со своей программой:
"Моя программа неправильно работает в Vista. В XP и ниже работает правильно, а в Vista - нет. Когда MS сделает Vist-у совместимой с моей программой?" smile.

Автор: Canada 26.4.2009, 21:27
Нет! никаких обид! Я же учусь! Все ваши комментарии очень важны!

Просто меня это удивило. Да и самомнение у меня не зашкаливает.

Цитата

Просто на других машинах из-за каких-либо особенностей вы эти косяки не заметили.


Это как? Программа то результы выдает. И они после проверок совпадают. А проверок около 100 000*количество машин 5 + - 1 ! Т.е. чтобы совпали примерно 100 000 результатов на 5 разных машинах, под XP, Vista. Это просто и удивило. Единственное различие - камень. Ну вежде работает, а именно на Коре 2 - нет. Вот и интересно стало. Код буду править по любому, но удивительно. 

Автор: kami 26.4.2009, 21:32
Повторюсь: программа "линейная", или использует дополнительные потоки?
Потому что единственное, что могу предположить по 
Цитата(Canada @  25.4.2009,  16:11 Найти цитируемый пост)
перескакивает через куски кода
 - это отсутствие/неправильная синхронизация потоков

Автор: Canada 26.4.2009, 22:32
Линейная..В общем, будем смотреть  smile 

Автор: CodeMonkey 27.4.2009, 09:56
Цитата
Программа то результы выдает. И они после проверок совпадают

Да ничего удивительного. Вот http://transl-gunsmoker.blogspot.com/2009/01/dllmain_04.html, когда один и тот же код (бажный) может работать верно, неверно или возбуждать AV в зависимости от того, как он скомпилирован. Аналогичные примеры можно подобрать и для смены железа/версии Windows - просто под рукой сейчас нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)