URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4665
[ Назад ]

Исходное сообщение
"Oracle OCCI при подключении Segmentation fault"

Отправлено sergf , 21-Сен-05 13:01 
Подключение к БД как-то влияет на разделяемую память???
Oracle 9.2.0, Linux RH 7.2.
-------------------------------------------------------------------
int main(int argc, char* argv[])
{
Environment* env;
env = Environment::createEnvironment(Environment::OBJECT);
}
проходит нормально.
-------------------------------------------------------------------
int main(int argc, char* argv[])
{
int fp, i;
int id[5];  
char *shm[5];      
// подключение к RRP
if ( (fp = open ( "/tmp/shmem.dat",O_RDONLY)) == -1 ) return ( 2 );                    
read ( fp, id, sizeof ( id ));
read ( fp, shm, sizeof ( shm ));
close ( fp );

for ( i = 0; i < 5; i++ )
{
    if ( shm[i] != shmat ( id[i], shm[i], 0 ) ) return ( 3 );
    printf("\n id[%d] = %d, shm[%d] = %d", i, id[i], i, shm[i] );
}
}
-------------------------------------------------------------------
Тоже проходит нормально.

А когда вместе:

int main(int argc, char* argv[])
{
int fp, i;
int id[5];  
char *shm[5];      

Environment* env;
env = Environment::createEnvironment(Environment::OBJECT);

if ( (fp = open ( "/tmp/shmem.dat",O_RDONLY)) == -1 ) return ( 2 );                    
read ( fp, id, sizeof ( id ));
read ( fp, shm, sizeof ( shm ));
close ( fp );
for ( i = 0; i < 5; i++ )
{
    if ( shm[i] != shmat ( id[i], shm[i], 0 ) ) return ( 3 );
    printf("\n id[%d] = %d, shm[%d] = %d", i, id[i], i, shm[i] );
}
}

после запуска выводит 4-е строки, а на 5-ой
даёт: Segmentation fault.
------------------------------------------------------------------------
Получается, что createEnvironment как то влияет на SHARED MEM?
Подскажите хотябы где копать?



Содержание

Сообщения в этом обсуждении
"Re: Oracle OCCI при подключении Segmentation fault"
Отправлено DeadMustdie , 22-Сен-05 09:43 
Я не совсем понимаю, чего там с общей памятью делается,
но проблема явно связана не с OCI, а именно с этими операциями.
Ошибки при работе с памятью (не только общей) часто вылезают
при добавлении в программу блока операций с памятью же.
Инициализация Ораклового окружения к таким блокам операций
явно относится.

"Oracle OCCI при подключении Segmentation fault"
Отправлено sergf , 19-Дек-05 15:49 
Так в том то и дело, что в данном примере
ничего с разд памятью не делается.
Выполняется только подключение к ней и всё.