Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/89: Рейтинг темы: голосов - 89, средняя оценка - 4.92
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
1

Signal 11 (SIGSEGV)

29.11.2012, 22:53. Показов 17210. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
То ли я дурак, то ли лыжи не едут.
Во время тестирования, прога проходит 6 тестов, на 7-ом возникает Run-time error с доп.информацией Signal 11 (SIGSEGV). При этом, набор входных данных явно не соответствует условию (указано, что длина входного файла 100013 букв, хотя макс. может быть лишь 100002 (2 буквы на кол-во строк + макс. длина строки (10000) * макс. кол-во (10)).
Добавил я проверку на входные параметры (если не выполняются - std::cerr + return), не помогло. Не могу понять, что от меня требуют и с чем эта ошибка может быть связана, ведь в 6 тесте размер входного файла был в 99301 символ и все корректно отработало, а у себя на компьютере результат выводило даже при длине намного большей, чем 100000 (т.е. на stack overflow грешить не получается).
What it is, what the hell? Что от меня хотят и как с этим бороться?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2012, 22:53
Ответы с готовыми решениями:

Program received signal sigsegv
Здравствуйте, я писал код для метода Квайна и столкнулся с такой проблемой program received signal...

Program received signal SIGSEGV, Segmentation fault
Когда запускаю дебагер: gdb ./preci Вюдает следуще. Я не могу понять с чем это могет быть...

Почему Program received signal SIGSEGV, Segmentation fault. ?
#include <iostream> #include "Tree.hpp" using namespace std; int main() { element *head;...

Fatal signal 11 (SIGSEGV) at 0x000000b4
Приветствую всех форумчан! Пишу сетевую игру под андроид используя библиотеку libGDX (релиз...

11
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
29.11.2012, 22:59 2
С работой с памятью где-то проблемы, можно было и погуглить где за сигнал-то такой.
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
29.11.2012, 23:02 3
Учитывая, что ты даже кода не приложил - гуглить, учиться пользоваться отладчиком, смотреть стек вызовов.
0
256 / 46 / 4
Регистрация: 24.11.2012
Сообщений: 466
29.11.2012, 23:05 4
MrGluck, есть хорошая утилита. Называется valgrind. Работает на линуксах, выявляется ошибки работы с памятью, в твоем случае это что-то вроде выхода за пределы массива.
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.11.2012, 23:16  [ТС] 5
Цитата Сообщение от NoMasters Посмотреть сообщение
С работой с памятью где-то проблемы, можно было и погуглить где за сигнал-то такой.
Так прогуглил. Но в коде лишь пихается 10 строк из std::cin, длинной под 10000 в контейнер std::set, далее с ними идет работа. Дин. массивы не использовал, но главное, при своем собственном наборе данных я пробовал даже брать 20 строк в 20000 символов, все отрабатывало как часы. Где тут имеет место сбой памяти? Тем более, я устанавливал ограничение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
typedef std::set<std::string, comp> myset;
 
bool correct(const std::string &s)
{
    switch(s.size())
    {
        case 1 :
            return isdigit(s[0]) && s != "0";
            break;
        case 2 :
            return s == "10";
            break;
        default :
            return false;
            break;
    }
}
 
int main()
{
    std::size_t N;
    std::string checkStr;
    std::ifstream ifs("gentest.txt");
    //std::cin>> checkStr;
    ifs>> checkStr;
    if (correct (checkStr))
        N = std::atoi(checkStr.c_str());
    else
    {
        std::cerr<< "Bad input (number of lines must be integer between 1 and 10)\n";
        return 1;
    }
    std::string tmp;
    myset set_words;
    for (std::size_t i=0; i < N && ifs>> tmp; i++)
    {
        if (tmp.size() > 10000)
        {
            std::cerr<< "Bad input (size of lines must be less than 10000)\n";
            return 2;
        }
        set_words.insert(tmp);
    }
    . . .
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
29.11.2012, 23:27 6
Опять ты не весь код выложил, и что у тебя за ересь в correct? Это ты так проверяешь что в первой строке число от 1 до 10?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.11.2012, 23:36  [ТС] 7
Проверил, стек вызовов корректно отрабатывает.

Добавлено через 1 минуту
Цитата Сообщение от Герц Посмотреть сообщение
Опять ты не весь код выложил, и что у тебя за ересь в correct? Это ты так проверяешь что в первой строке число от 1 до 10?
Что это именно число от 1 до 10. пусть бредово, зато букву или слово в переменную N не скушает.
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
29.11.2012, 23:38 8
C++
1
2
3
4
5
std::size_t N;
int check;
std::ifstream ifs("gentest.txt");
ifs >> check;
// if ( 0 < check && check <= 10 )
Вуаля?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
30.11.2012, 04:16  [ТС] 9
Цитата Сообщение от Герц Посмотреть сообщение
C++
1
2
3
4
5
std::size_t N;
int check;
std::ifstream ifs("gentest.txt");
ifs >> check;
// if ( 0 < check && check <= 10 )
Вуаля?
а если в gentest.txt идет что-то типа:

Код
eat_this_please
заместо числа, типа int?

Добавлено через 51 секунду
Это просто костыль для себя, т.к. уже не мог предположить, что же еще может вызывать Runtime error с неизвестными мне данными.

Добавлено через 4 часа 35 минут
Результат обработки в valgrind:
Код
danila@danila-VX6:~/Мои работы на С++$ g++ TaskB_1.cpp -o taskB -std=c++0x
danila@danila-VX6:~/Мои работы на С++$ valgrind --leak-check=yes ./taskB
==22673== Memcheck, a memory error detector
==22673== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==22673== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==22673== Command: ./taskB
==22673== 
sjadhldzkqzcfukaxejkvoqwutrmymxwsekgzafhqbijdfoxgwoonjxwdifbypudmyuirrmakzwtntzycvhxoucpsmmdjavqrvnkshkigthqvpuaqtbvggiwhlvtzrcofpyjyweofaitoihifbicnqapqkyvjaeeaticbytuoazqtewsvxveioknbfbihsvxmugkppmzgxhjiyrpvtubtmjdtawdjqubucjwwkngockhvyeyynmqvfdlaebftommjrlbptxxhtbpdqmiascejsbufsxvvuvrvrsghoyqngorixwslvuytsrewujvyjlrghnmipyihtwlzjdbipyaimgqxxfvsjsrzhhxynpwnrmtwfysxycddozbigrxrxtxgrlgnypqsakfverwbzqvshycnqyemdhxlmvdwubbjdziwsdgtblzlccjszxkchbrdhgnuztvspwfiwmekzhobmiuvojvaoiaxwyrwtgpdysjnqbyqvbthnjpwkppdmpdyknzvwdyjynifhxgszgxlwluyaejykmrpgifxgnwdonwcnqcyblgarrtvtdcljlzhzvvfkcqnfmriuprflgizpgczjkondgnbiwxfwzhiaassonfgusjwitgknzufgdsjmrqobemrycctyjflxpfkawvzkgbuydwvoccvbwbjvgdktwpopoqyfpzdpoyspqqphwcoqvijaruorsmtrnwsagfzhgfngsnmgycrfjoixdcnbtyctezcwkcvcqylczheudyerfvbgefkwvxyebbvcaroeztbsjnijyurxpfvaybbuoeomzsbtydygawmiswlqhjhnjucpcdbhtxsfffsnvmyuzuccwnyvzythxdggzibximisjsgqmysmkjuoxlviqfsibsjniahrmaonkfuuqzmduabpoaxmanqdaiqwunisitmtbunuxhleffsysbjmggjgsvbdqatiorscvwjqiipohwugqvhdjilmrhbzlrltzppdkwqylarpxnvsqucrbcjvsdneynawxbjsztlyrzbstjpwbkyhtktdeausjjznjsargmpufefgjzcplnksqdjksreuzzvxujznmqgmzlxnucguudopwaeykrstmlatfujirmjrfhebtjggtncsnwjnqrqelgdusqjfvjoawbnqzupxnnduauclotzmrmdrxdopwyrwmbpfwpxfdxfzprrnfsrgncjabybuymmikgpnrlunathxlnijococarwqrjcjyylcxmessqfwebslceelhsepoaxijdjzteiebgfalqfpvwkldifjazmlftutxyzerbdbginrbisyefppvqaqgxmbztnamjnubjxjefwanpvktbzqunsxmcrxauejeuvbvdduyaqrinkjlkkottwpfflaoggwtiwwtumkqpgguznjxyymskdunzrzkvuokbxcfxiczyctnymxemvbilcfyvldppcaciqbmpxaumrrossinwahsfmwlpmexfrleqciwgrwllbbfxtcwwrlejjrqazqfdjknsqzzvblaechndnulmftaocgpwsjhihmljzkwqpoxfglvhpkxpyiwndnttapllwyhxbousfnbcveeppcpzvexiqzcojiijjwqqcdpahhmlzeqhxurmgdpnbxtxmdpfsuqwfalufvujygfdkrhywfgeewasypbncdrcswogwarihktxtxxgraefezfpupglzusqzvwnywncogalebnjhytrexkcjtkvohhrwzxutifufsynhursszbqsxjuzxcqdrxgbuzrgtspsgqafzfpgztyqcucydvocmccaejhpszdtoxgttajzzvbpxeluhuzqacpnodlsmpjagdpnjyzvagpicaxrheemnowoddegdlaqhhmboljqnvyabbdamuasyyaqiunuwamwtuwolwahewyhqyonhkfjbmexoefaanqgdcogxfmlzcnbjamlsjpwazgnrumrlvhtjwubpabwswgfyfdnnxavohlkfsmwqywdkrhechurisifxlctpgfpfvjgydgxyucnaojtuslgiuqzccnluvqfacnjdthjzosokobyvmgqmwlmvtfbanqbhahmevewjzaeuuaqhggfvdpzhzcdbmfdftosghkffmktniximgzjyewevoymbjyquoubteflumgmrlddeafbxwrpzmkrosagskzbrmfjolqjtazgpyowhgqaikoentslyhiuepqylhnnbllleapkftohystxicfcajwsloheuotxnjmbywlqlcsitzkyecrtnlgekclpotlpiybqluzwydlhwlmhqffraayynoaixrdbebjmdzmxyyoilgsybxbsiuyhumtlrmknrnfaagbeeucueeaguapmarddwwhpzswguusdooyvdbdwuhqdcjeonerlflijszgvdbdiktcdksuyqzylritcajalddaserfadlcidrfrsivxeixgirvmvbcdysgocxytaydfhcaxachoalvmfumcbuowxqfywpdhitqqiyxwmnafmibohcjebvqfqkbrucaecgahznxrnwtxttgemvjrvbhqdkcbzwlhaqmpbiidqahwapymhdptpqfhskvwmbvwgfqxfdgmogccyrlisesdkkyqktzedrjqmbuydtbllxnmshvomoxikenqtbdtmzlphrbmlqzqsqsomuduaknwrkrxgpjdilmhfjgevbxsonhozplihakjdmpamsghhytmcfhyvojepzmitfugdrxbqoofhbxxsjjkkucdwsabxtycwbytlrkkswdehzisedqoofkrjtuwssrgiecpukbarsuwsjtrjhtbnsxcfudixmvsrxkltllngjhnsegtoafkvfxqzrfjrqbeylpfrplcftipxsfbhmpohfdnlziouwoqqafphaozfthhkszmggndirqihbmouxogabicizovsjbexyxdehosorckaehrsbxkbyssvbpposbqdlsxnuhdfnvcakkcensdhvdtvyxtguxlyppkejhcjkskdjposdevyhfsndidqywpqxkctnnqvblmxwodluldqzbjleaoqgpfpdzrmtmpswwvrgdqeedcucaxitpcnuegvbcoriahqhaorlvoitlathbjukbkoeblgpvdbevqiwdgjfizzrbpsmrkhntotiyalqxxccsjggzqppswparmxtzgqrseotkzqjhfqthponygbkxbxcwpgfcmaoqjyloreysvauzopbcizueqdqarhzxlrvnvtnqayjqtldxtlgbpkpbbxhwdsbneavrhjiriqwtkwbbcttvehwyzveqmeuvcfumntisvziggifdkmsngxtvyqxhibvqhjlqcfwzvtpdblfejofrwfaykxbxrpwwebrdhgygpeubbavmsmgxksulfkzzycnpelvmkrvxifxlhuezsdyergvbxsuvwtxsibqcfbifgplsbacqntfpgusypuiuyupdlimptqxoqfzoabjldazohpdfciqqieuslgfzanhoqrcszpvkemeimxvtjswgqwhcpiyicuqfwnwzdswvlkuooyxjrxnslzyxvpimypovnuokjxwablfyliqezjmcwnrnmolfjlzlvvvqzpfzyegjdlgudubfgpiczfptkhhonbsorfyrsendhofkpsqcbsqhuuylymbtyoiaqeptrjpqaqyslvvzjvnupqgdbgczzeadobyxtvhovvgmrurhxhdzbqmnqahucujmhpylqbucksrcpcroqoefcguogjzirggtlovbrpcjrbhiosfouyhuppsaewqbwfmbbcvtalvcugkurrwsrpscwnhkztgybrabhbygboeotsozfrtujjvyevnmvgvgkhkgnsseyfzxsvhyjmjnkmphttrnasajczbimtshutxwzvvjouvuspsnfxrrszmrxgawwypaypsqgm==22673== 
==22673== HEAP SUMMARY:
==22673==     in use at exit: 0 bytes in 0 blocks
==22673==   total heap usage: 47 allocs, 47 frees, 310,167 bytes allocated
==22673== 
==22673== All heap blocks were freed -- no leaks are possible
==22673== 
==22673== For counts of detected and suppressed errors, rerun with: -v
==22673== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
danila@danila-VX6:~/Мои работы на С++$
0
256 / 46 / 4
Регистрация: 24.11.2012
Сообщений: 466
30.11.2012, 04:20 10
MrGluck, ну тогда только gdb: run, bt
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
30.11.2012, 04:40  [ТС] 11
Мне кажется, проблема все же связана с неправильными входными данными.
У меня краха не происходит, в этом весь трабл. Я не знаю условий его появления.
По заданию:
В первой строке записано целое число K (1 <= K <= 10). Далее записаны исходные K строк.
Каждая строка состоит из не более чем 10 000 маленьких латинских букв.
максимальное число символов в файле (при K = 10) 2 + 10 000 * 10 = 10 002.
При описании входных данных в Test7 пишет:
(file is too long, size = 100013)
Мб они ожидают exception вместо if при неудовлетворении входных данных?
0
256 / 46 / 4
Регистрация: 24.11.2012
Сообщений: 466
30.11.2012, 04:50 12
Цитата Сообщение от MrGluck Посмотреть сообщение
10 002
+ 11 переносов строки?
Цитата Сообщение от MrGluck Посмотреть сообщение
Мб они ожидают exception вместо if при неудовлетворении входных данных?
ну конечно же нет. И да, функция correct какая-то аццкая

Добавлено через 2 минуты
м.б. служебные данные типа время последнего изменения файла и т.д. что мешает выделить 2^n байт, например, 16384?
0
30.11.2012, 04:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2012, 04:50
Помогаю со студенческими работами здесь

QML, Android и TextInput, ошибка "Fatal signal 11 (sigsegv) at 0x00000000"
Имеется приложение написанное с использованием QML. После добавление в него поля TextInput, при...

Signal: Segmentation fault (11) Signal code: Address not mapped (1)
Всем доброго здоровья! Имеется параллельная программа решения алгоритма Гаусса-Зайделя. Указанная...

Сигнал SIGSEGV
Всем доброго времени суток. И да, QT опять тыркается пыркается на ровном месте. :rtfm::wall:...

External: SIGSEGV
Привет. Начал сейчас изучать классы, написал вроде как простейший класс, но на 10-й строке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru