434 / 299 / 82 Регистрация: 11.12.2010 Сообщений: 1,209 |
|
1 |
|
01.04.2013, 14:27. Показов 24275. Ответов 10
Написал программу которая перемножает 2 очень больших матрицы. : R6010 — abort() has been called Грешил на тип. Так как матрицы типа int сменил на long ошибка осталась.
0 |
4773 / 3267 / 497 Регистрация: 19.02.2013 Сообщений: 9,046 |
|
01.04.2013, 14:31 |
2 |
Kill100, код в студию. А вообще подобная ошибка встречалась при отсутствии конфига в нужном каталоге.
1 |
5230 / 3202 / 362 Регистрация: 12.12.2009 Сообщений: 8,112 Записей в блоге: 2 |
|
01.04.2013, 14:35 |
3 |
15000 * 15000 = 225 000 000 сколько RAM на машине?
1 |
434 / 299 / 82 Регистрация: 11.12.2010 Сообщений: 1,209 |
|
01.04.2013, 14:43 [ТС] |
4 |
900 * 2 (матрицы) = ~1.8 GB 16gb. Так что в этом проблемы быть не может
0 |
5230 / 3202 / 362 Регистрация: 12.12.2009 Сообщений: 8,112 Записей в блоге: 2 |
|
01.04.2013, 14:45 |
5 |
причин для abort() много, а дебажить пробовал?
0 |
434 / 299 / 82 Регистрация: 11.12.2010 Сообщений: 1,209 |
|
01.04.2013, 14:47 [ТС] |
6 |
Kill100, код в студию. А вообще подобная ошибка встречалась при отсутствии конфига в нужном каталоге. Чел спс! Ты натолкнул меня 1 очень интересную мысль, проверил прога заработала.
0 |
4773 / 3267 / 497 Регистрация: 19.02.2013 Сообщений: 9,046 |
|
01.04.2013, 14:48 |
7 |
Не по теме:
сколько RAM на машине? главное чтоб на 16Гб RAM не было 32bit винды Добавлено через 26 секунд
В настройках проекта поставил платформу 64x. Ч.Т.Д
1 |
434 / 299 / 82 Регистрация: 11.12.2010 Сообщений: 1,209 |
|
01.04.2013, 16:54 [ТС] |
8 |
Рано радовался. array_on_vector.cpp(129): warning : C6386: Переполнение буфера при записи в «Return_Vektor»: доступный для записи объем равен «len_vector_m*4» байт, однако записать можно только «8» байт.
0 |
4773 / 3267 / 497 Регистрация: 19.02.2013 Сообщений: 9,046 |
|
01.04.2013, 16:57 |
9 |
Kill100, код-то покажешь или нет?
0 |
Kill100 434 / 299 / 82 Регистрация: 11.12.2010 Сообщений: 1,209 |
||||
01.04.2013, 16:58 [ТС] |
10 |
|||
А всё отбой нашел описание
0 |
Friday ну и долго меня небыло… 61 / 57 / 8 Регистрация: 24.03.2013 Сообщений: 173 |
||||
01.04.2013, 17:03 |
11 |
|||
А всё отбой нашел описание
попробуй long long вместо long
0 |
Всем доброго дня!
Использую поток от STL (std::thread) из нового стандарта (работаю с Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)). Есть класс TCPServer, содержащий в себе этот поток:
class TCPServer final : public WaitingPoint { public: boost::asio::io_service* ioService; private: std::atomic_bool isExit; std::thread thread; boost::asio::ip::tcp::acceptor* ioAcceptor; std::atomic_bool isWaitingAccept; std::shared_ptr<ConnectionPoint> connectionAccept; ... };
Затем в один из моментов я запускаю поток (то есть до этого функцию обработки я ему не указывал):
Result TCPServer::init(void) { isExit=false; ioService=new (std::nothrow) boost::asio::io_service(); if(!ioService) return Result::errorMemory; ioAcceptor=new (std::nothrow) boost::asio::ip::tcp::acceptor(*ioService); if(!ioAcceptor) return Result::errorMemory; tcp.set(ioAcceptor,nullptr); thread=std::thread(std::bind(&TCPServer::loop,std::static_pointer_cast<TCPServer>(shared_from_this()))); return Result::ok; }
Он крутит цикл:
Result TCPServer::loop(void) { boost::system::error_code ec; while(!isExit) { ioService->run_one(ec); ioService->reset(); } return Result::ok; }
И когда мне уже он не нужен, я вызываю это:
void TCPServer::free(void) { ioAcceptor->close(); connectionAccept.reset(); if(!isExit) { isExit=true; ioService->reset(); ioService->stop(); if(thread.joinable()) thread.join(); } }
Грубо говоря у меня есть функция release():
void WaitingPoint::release(void) { if(isRemoved) return; isRemoved=true; mConnectionPoints.lock(); size_t len=vConnectionPoints.size(); for(size_t i=0;i<len;i++) { auto& item=vConnectionPoints[i]; item->isRemoved=true; item->free(); } vConnectionPoints.clear(); mConnectionPoints.unlock(); std::shared_ptr<WaitingPoint> p(shared_from_this()); Core::instance->freeWaitingPoint(this); free(); }
Вызовом которой я удаляю сервер. Делаю я это вот так:
void release(void) { if(waitingPoint) waitingPoint->release(); while(true); if(connectionPoint) connectionPoint->release(); if(core) core->release(); std::cout<<std::endl<<"Press Enter for exit..."; std::cin.get(); }
Тут я намеренно зациклил программу. В общем после выполнения задуманного мной сценария
и дохода до бесконечного цикла, программа в какой-то момент (уже вися основным потоком в бесконечном цикле) рушится с сообщением:
И останавливается вот тут:
То есть проблема с потоком. В чём может быть ошибка и как её исправить?
-
Изменено
26 января 2013 г. 11:10
I’m trying to enter a number,n and get the least super lucky number that is more than or equal to n.
Super lucky: it’s decimal representation contains equal amount of digits 4 and 7. For example, numbers 47, 7744, 474477 are super lucky and 4, 744, 467 are not.
Here’s my code
#include<iostream>
#include<string>
using namespace std;
void superLucky(int n,string s, int count4, int count7)
{
if (s.size() > 10)
return;
if (( stoi(s) >= n ) && (count4 == count7) && (count4+count7)!=0)
{
cout << s << endl;
return;
}
superLucky(n, s + '4', count4+1, count7);
superLucky(n, s + '7',count4,count7+1);
}
int main()
{
int n;
cin >> n;
superLucky(n, "", 0, 0);
return 0;
}
Once I input some integer I get debug error R6010 — abort() has been called. What this means ? and how can I fix this ?
At completely random times during runtime, my program crashes with the error in the title. The error occurs without any user inputs or indication as to why, which makes it difficult to debug. The Call Stack doesn’t help either:
msvcr120d.dll!00007ffa9f8b7642() Unknown
msvcr120d.dll!00007ffa9f9e2044() Unknown
msvcr120d.dll!00007ffa9f9a8c98() Unknown
msvcp120d.dll!00007ffaa7273340() Unknown
msvcr120d.dll!00007ffa9f9baf90() Unknown
msvcr120d.dll!00007ffa9f9aafe2() Unknown
ntdll.dll!00007ffad1633573() Unknown
msvcp120d.dll!00007ffaa722df29() Unknown
msvcr120d.dll!00007ffa9f8ba105() Unknown
msvcr120d.dll!00007ffa9f8ba357() Unknown
vfbasics.dll!00007ffab17dc729() Unknown
kernel32.dll!00007ffacede13d2() Unknown
ntdll.dll!00007ffad15b5444() Unknown
According to the thread list, the error doesn’t occur in the main thread, so it might be a multi-threading conflict, but I don’t know for sure.
I can’t post any code because the program is too big and I don’t know which piece of the code is causing the issue.
How can I narrow the problem down?
- Forum
- Beginners
- R6010 — Abort()
R6010 — Abort()
I am getting a debug error when my program reaches: throw invalid_argument( "Month must be between 1-12" );
The error is: R6010 — abort() has been called.
|
|
In main:
|
|
Setting the date out of bounds causes this when it should just throw the error message. When I do a try/catch it works properly though.
That’s normal. Uncaught exceptions terminate the program, as they should.
Topic archived. No new replies allowed.