>Это не зависит от ее простоты или времени ее юзания на 32
>битах. Так что либо код в студию либо смотрите что там
>у вас в ней эдакого :) Вот кусок кода, в котором вылет
int load_record(int db)
{
int fd;
adb_descr* d;
int rd;
char __rhdr[2];
bool deleted=false;
memset(&__rhdr[0],0,2);
//Get DB descriptor struct
if(db<0) return ADBE_INVDESC;
d=(adb_descr*)__db_descr.get(db);
if(!d) return ADBE_INVDESC;
if(d->closed) return ADBE_INVDESC;
if(!d->count) return ADBE_EOF; //Empty database
d->deleted=false;
//Get file descriptor
fd=d->fd;
//Read record header
rd=read(fd,&__rhdr[0],2);
/*DEBUG*/
printf("rd=%d\n",rd);
/**** ЗДЕСЬ У НАС ГРАБЛИ ****/
if(rd!=2) return errno;
/** И ЧТО САМОЕ ИНТЕРЕСНОЕ, И ЭТО ПРОХОДИТ!!! ХОТЯ, ИЗ ФАЙЛА РЕАЛЬНО НИЧЕГО НЕ ПРОЧИТАНО!!!**/
if(memcmp(&rhdr[0],&__rhdr[0],2))
{
//Deleted record?
if(!memcmp(&dhdr[0],&__rhdr[0],2)) { d->deleted=true; deleted=true; goto _rdr; }
return ADBE_CORRUPTED;
}
_rdr:
rd=read(fd,d->rec.data,d->rec.len);
if(!rd) return ADBE_EOF; //End of file
/** И ЭТО ТОЖЕ ПРОХОДИТ, СОБАКА БЕШЕНАЯ!!! **/
if(rd!=d->rec.len) return errno;
//Done
if(deleted) return ADBE_DELETED;
return 0;
}
Мда. Только даже такой пример наврядли чего полнее скажет. Тогда придется приводить весь код, а там файлов штук 5 точно задействовано, хотя я не совсем уверен, может, и больше. Это либа статическая в итоге получается.
Блин, хоть в какую сторону копать, а то у меня мОзги уже плавятся...
Я вообще не пойму, КАК такое может быть?
Ну, если бы я стек попортил, так вылетело бы все, а оно РАБОТАЕТ!!! Я проверял, 3 часа цикл вертело, и ни одного сбоя сбоку или ошибки... Только вот, что делает, совсем непонятно...