Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Firefox от Февраль 04, 2015, 15:02



Название: readAll() SIGSERV
Отправлено: Firefox от Февраль 04, 2015, 15:02
Здравствуйте. у меня падает программа при попытки из базы в формате .csv(документ exel) считать данные. работаю в системе МСВС. выдает SIGSERV ошибку.Класс с функцией подключила в свою программу, в  Windows этот класс работал без ошибок. Так же возникает SIGSERV именно в этом классе на qDebug()<<....
Код:
int read_BD::load_data(QString fliename)
{
    //qDebug()<<fliename;
    QFile fp(fliename);
    if(!fp.exists())
        return 0;
    if(!fp.open(QIODevice::ReadOnly |QIODevice::Text))
        return 0;
    QString dataa;
    int count=0;
    QTextStream in(&fp);
    dataa=in.readAll();
    //qDebug()<<dataa.size();
    QStringList lst=dataa.split("\n");
    parseData(lst);

    //qDebug()<<count;
    fp.close();
 
}


Название: Re: readAll() SIGSERV
Отправлено: Пантер от Февраль 04, 2015, 15:06
На какой именно строчке падает? Файл какого размера?


Название: Re: readAll() SIGSERV
Отправлено: Firefox от Февраль 04, 2015, 15:54
Падает на строке readAll ().
Файл 124.4кб
Также в выводе пишет : ***glibc detected *** free(): invalid next size (fast): 0x0a28a218***


Название: Re: readAll() SIGSERV
Отправлено: Пантер от Февраль 04, 2015, 15:58
Может, много слишком. Попробуй читать пачками.


Название: Re: readAll() SIGSERV
Отправлено: Old от Февраль 04, 2015, 16:22
Может, много слишком. Попробуй читать пачками.
Скорее всего куча уже битая, до вызова load_data.
Где-то ТС некорректно с ней работает.


Название: Re: readAll() SIGSERV
Отправлено: Пантер от Февраль 04, 2015, 16:25
Может, много слишком. Попробуй читать пачками.
Скорее всего куча уже битая, до вызова load_data.
Где-то ТС некорректно с ней работает.
Тоже может быть, но мое предположение проверить легче и быстрее.


Название: Re: readAll() SIGSERV
Отправлено: Old от Февраль 04, 2015, 16:27
Тоже может быть, но мое предположение проверить легче и быстрее.
124 Кб. :)


Название: Re: readAll() SIGSERV
Отправлено: Firefox от Февраль 04, 2015, 17:00
Дело в том что если создать какой-то txt файл с символами то ошибку не выдает только на qDebug падает. Без него функция все хорошо делает. А вот именно нужная мне база никак


Название: Re: readAll() SIGSERV
Отправлено: Old от Февраль 04, 2015, 17:05
Дело в том что если создать какой-то txt файл с символами то ошибку не выдает только на qDebug падает. Без него функция все хорошо делает. А вот именно нужная мне база никак
Ищите раньше, где-то вы не корректно работаете с памятью.


Название: Re: readAll() SIGSERV
Отправлено: Alex Custov от Февраль 04, 2015, 17:07
Дело в том что если создать какой-то txt файл с символами то ошибку не выдает только на qDebug падает.

Битая память. Где-то в программе была ошибка работы с памятью - двойное удаление указателя, запись в неинициализированный указатель и т.п.


Название: Re: readAll() SIGSERV
Отправлено: __Heaven__ от Февраль 04, 2015, 20:32
а valgrid такие штуки не ищет?


Название: Re: readAll() SIGSERV
Отправлено: Old от Февраль 04, 2015, 21:00
а valgrid такие штуки не ищет?
Ищет.


Название: Re: readAll() SIGSERV
Отправлено: Firefox от Февраль 05, 2015, 08:45
Перепись базы в txt формат пока что помогла.


Название: Re: readAll() SIGSERV
Отправлено: __Heaven__ от Февраль 05, 2015, 13:08
Но это вовсе не означает, что в будущем вы снова не словите эту ошибку. В другом месте


Название: Re: readAll() SIGSERV
Отправлено: Alex Custov от Февраль 05, 2015, 14:18
Перепись базы в txt формат пока что помогла.

Причём тут помогла-не помогла. У вас ошибка работы с памятью где-то в программе, ищите её, иначе undefined behaviour во все поля.


Название: Re: readAll() SIGSERV
Отправлено: Fat-Zer от Февраль 05, 2015, 15:01
а что вообще за сигнал SIGSERV такой? тётя маня о нём ничего не знает, а гугл ничего разумного не знает... может это вообще не память, а какое-нить изобретение сумрачных гениев закрытых НИИ?


Название: Re: readAll() SIGSERV
Отправлено: qate от Февраль 05, 2015, 15:02
локаль мсвс koi8r, cvs файл из венды (локаль cp1251) - может QTextStream както не понимает такого безобразия ?


Название: Re: readAll() SIGSERV
Отправлено: __Heaven__ от Февраль 05, 2015, 15:06
а что вообще за сигнал SIGSERV такой? тётя маня о нём ничего не знает, а гугл ничего разумного не знает... может это вообще не память, а какое-нить изобретение сумрачных гениев закрытых НИИ?
SIGSEGV. ошибка сигментации.


Название: Re: readAll() SIGSERV
Отправлено: Fat-Zer от Февраль 05, 2015, 15:16
SIGSEGV. ошибка сигментации.
а ТС точно опечатался? или «всем известно, что» именно он там посылается там при сегфолте?

локаль мсвс koi8r, cvs файл из венды (локаль cp1251) - может QTextStream както не понимает такого безобразия ?
от сознания того, что koi8 ещё где-то используется хочется прижаться к батарее, обнять колени и заплакать ((


Название: Re: readAll() SIGSERV
Отправлено: __Heaven__ от Февраль 05, 2015, 15:30
от сознания того, что koi8 ещё где-то используется хочется прижаться к батарее, обнять колени и заплакать ((


Название: Re: readAll() SIGSERV
Отправлено: qate от Февраль 06, 2015, 08:39
Такие анекдоты и в оригинале книги, или переводчики постарались ?