Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
spbout
Сообщений: n/a
#1

Run-Time Check Failure #2 - Stack around the variable 'task' was corrupted. - C++

23.05.2011, 02:42. Просмотров 866. Ответов 0
Метки нет (Все метки)

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
void Dispatch(){
    if (gRunTask.entry != NULL){
        if (setjmp(gE) != 0)
            return;
        *gRunTask.env = *gE;
        gRunTask.jmp = true;
    }
 
    if(gRunTask.entry == NULL){
        if(gReadyTask.begin() == gReadyTask.end()){
            //нет задач на выполнение
            ShutdownOS();
        }
 
        //Значит на выполнении нет задачи
        gRunTask = gReadyTask.back();
        gReadyTask.pop_back();
    } else if ( (gRunTask.waitRes)||((gRunTask.priority < gReadyTask.back().priority)&&(!gReadyTask.back().waitRes)) ){
        
        TTaskStruct task1 = gRunTask;
        gRunTask = gReadyTask.back();
        gReadyTask.pop_back();
        gReadyTask.push_back(task1);
        std::sort(gReadyTask.begin(),gReadyTask.end(),&compare);
    }
    //
    //
    *gE = *gRunTask.env;
    if (gRunTask.jmp)
        longjmp(gE,-1);
    gRunTask.entry();
}
Пишу ОС реального времени, это диспетчер, при переключении между задачами использую setjmp и longjmp. Запускаю первую задачу она захватывает ресурс1, позжу запускает вторую, вторая по приоритету выше выкидывает первую, но ей тоже нужен ресурс1, она идет в ожидание, первая заканчивает работу и освобождает ресурс1, тут должна включиться вторая, но на строчке longjmp вылетает прерывание из заголовка. Если убрать *gE = *gRunTask.env; и *gRunTask.env = *gE; использую gRunTask.env на прямую, совершенно на том же шаге выкидывает:
Необработанное исключение в "0x77a8e1b9" в "RTOS.exe": 0xC0000029: Неверный конечный адрес во время операции завершения.
при этом указывает на кусок кода их <algorithm>, использую visual studio 2008, спасибо.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 02:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Run-Time Check Failure #2 - Stack around the variable 'task' was corrupted. (C++):

Run-Time Check Failure #2 - Stack around the variable 'A' was corrupted - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); const int n=50; int...

Run-Time Check Failure #2 - Stack around the variable 'MX' was corrupted. - C++
Решаю задачу. Вот код: #include &lt;iostream&gt; using namespace std; int main () { int S; long long MX; for (int...

Run-Time Check Failure #2 - Stack around the variable 'support_points_1' was corrupted - C++
Ошибка вылетает на статический массив после завершения работы функции. Вроде как выход за границы массива.. но никаких ошибок, до...

Run-Time Check Failure #3 - The variable 'y' is being used without being initialized - C++ Builder
нужно написать программу по графику который состоит из трех частей, в итоге выводит ошибку Run-Time Check Failure #3 - The variable 'y' is...

Run-Time Check Failure #2 - Stack around the variable 'y' was corrupted - C (СИ)
Даны два строго упорядоченных по возрастанию массива X и Y из n элементов каждый. В массиве X найти все пары таких элементов X и X, для...

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted - C++
Добрый день подскажите что это означает и как исправить данное сообщение Run-Time Check Failure #2 - Stack around the variable 'a' was...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 02:42
Привет! Вот еще темы с ответами:

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted - C++
Всем привет, начал недавно писать на с++, делаю программу по заполнению и сортировке элементов массива. При выполнении не показывает ...

Run-Time Check Failure #2 - Stack around the variable 'n' was corrupted - C++
При вводе значение более трёх символов (это значение конечно можно регулировать) появляется следующее сообщение Run-Time Check Failure #2 -...

Run-Time Check Failure #2 - Stack around the variable 'C' was corrupted - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { const int n=10; int i,A,B,C,k; ...

Run-Time Check Failure #2 - Stack around the variable 'dt' was corrupted - C++
Я понимаю что ошибка говорит о том что где-то вышел за диапазон массива, я перепроверил все циклы, вроде все гладко с индексами. данная...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru