2010-12-14 4 views
0

Я отлаживаю программу Fortran 90 с valgrind. Я получаю ошибки, имеющие это в следЧто делает for_write_seq_lis?

==93929== Use of uninitialised value of size 4 
==93929== at 0x7C3D4B: for__add_to_lf_table 
==93929== by 0x8014A8: for__open_proc. 
==93929== by 0x7C7B0F: for__open_default 
==93929== by 0x7F3648: for_write_seq_lis 
<rest of my application backtrace> 

И я не понимаю, если это моя ошибка или просто причуда внутренней библиотеки. Я хотел бы знать, что делают эти функции, и любую другую соответствующую информацию.

Я компилирую с ifort (IFORT) 11.1 20100806, valgrind 3.6.0 на macosx.

Редактировать: Я использовал пятна ошибок valgrind, когда используется associated(ptr), или когда используется print *. В любом случае мне просто интересно узнать, за что отвечают эти подпрограммы. Что такое LF-таблица?

ответ

0

Я предполагаю, что символы с именами, начинающимися for_, определены в библиотеках времени выполнения, которые использует программа, возможно, с помощью компилятора Intel. Я ожидаю, что вы это поняли Стефано. То, что они делают, является неясным, кроме очевидного: реализовать различные операции Fortran.

Что вы сделали, чтобы отследить происхождение ошибки, из-за которой valgrind жалуется, что вы использовали неинициализированную ценность? Вы пытались скомпилировать с опцией -check uninit? Вы пробовали проверку исходного кода Intel на коде?

EDIT: Aha. Одной из особенностей Fortran является то, что между объявленным временем и временем, когда оно впервые связано с целью, указатель не имеет статуса ассоциации. Он не ассоциируется и не ассоциируется, и призывы к ASSOCIATED могут приводить к нечетным результатам; в соответствии со стандартом они не должны, например, возвращать либо .true., либо .false.. Это может быть источником вашей проблемы, хотя другие симптомы, о которых вы сообщаете, не указывают на это.

+0

К сожалению, я не знаю, в чем проблема. Код работает отлично для небольших случаев, но как только я увеличиваю размер, я получаю ошибку «6591 Illegal instruction». У меня есть все параметры отладки, и я не получаю сообщение об ошибке при работе на маленьком футляре. В настоящее время я ищу переломный момент в размере, который заставляет его идти бум. –