Call stack of a SIGABRT, please help

C

Charlie

Dear all,

I'm running a trace analyzer over a large trace file(several gig hz).
However it stopped in the middle. I got the call stack from the gdb. I
wonder if anyone could figure out the reason of this SIGABRT?

About to run ./tracer_21Feb2006 ammp.loop_bounds.trace
ammp.mem_ops.trace
Using host libthread_db library "/lib/tls/libthread_db.so.1".

Program received signal SIGABRT, Aborted.
0x00ca8402 in __kernel_vsyscall ()
#0 0x00ca8402 in __kernel_vsyscall ()
#1 0x001697d5 in raise () from /lib/tls/libc.so.6
#2 0x0016b149 in abort () from /lib/tls/libc.so.6
#3 0x005641db in __gnu_cxx::__verbose_terminate_handler ()
from /usr/lib/libstdc++.so.6
#4 0x00561ef1 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.6
#5 0x00561f26 in std::terminate () from /usr/lib/libstdc++.so.6
#6 0x0056206f in __cxa_throw () from /usr/lib/libstdc++.so.6
#7 0x005624bc in operator new () from /usr/lib/libstdc++.so.6
#8 0x0804b0ba in std::vector<mem_op, std::allocator<mem_op> >
::_M_insert_aux
(this=0xbff7a2d0, __position={_M_current = 0xa7fca008},
__x=@0xbff7a240)
at new_allocator.h:81
#9 0x0804a6ec in main (argc=3, argv=0xbff7a554) at stl_vector.h:330

terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc


==========================================
I would really appreciate if anyone could give some pointer or
suggestions!

Many thanks in advance,
Charlie
 
J

Jacek Dziedzic

Charlie said:
Dear all,

I'm running a trace analyzer over a large trace file(several gig hz).
However it stopped in the middle. I got the call stack from the gdb. I
wonder if anyone could figure out the reason of this SIGABRT?

About to run ./tracer_21Feb2006 ammp.loop_bounds.trace
ammp.mem_ops.trace
Using host libthread_db library "/lib/tls/libthread_db.so.1".

Program received signal SIGABRT, Aborted.
0x00ca8402 in __kernel_vsyscall ()
#0 0x00ca8402 in __kernel_vsyscall ()
#1 0x001697d5 in raise () from /lib/tls/libc.so.6
#2 0x0016b149 in abort () from /lib/tls/libc.so.6
#3 0x005641db in __gnu_cxx::__verbose_terminate_handler ()
from /usr/lib/libstdc++.so.6
#4 0x00561ef1 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.6
#5 0x00561f26 in std::terminate () from /usr/lib/libstdc++.so.6
#6 0x0056206f in __cxa_throw () from /usr/lib/libstdc++.so.6
#7 0x005624bc in operator new () from /usr/lib/libstdc++.so.6
#8 0x0804b0ba in std::vector<mem_op, std::allocator<mem_op> >
::_M_insert_aux
(this=0xbff7a2d0, __position={_M_current = 0xa7fca008},
__x=@0xbff7a240)
at new_allocator.h:81
#9 0x0804a6ec in main (argc=3, argv=0xbff7a554) at stl_vector.h:330

terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc


==========================================
I would really appreciate if anyone could give some pointer

NULL
or suggestions!

I'd say your program ran out of memory (the throw in new),
threw bad_alloc and then another exception was thrown
in the exception handling routines (hence std::terminate),
but I may be wrong.

HTH,
- J.
 
J

Jim Langston

Charlie said:
Dear all,

I'm running a trace analyzer over a large trace file(several gig hz).
However it stopped in the middle. I got the call stack from the gdb. I
wonder if anyone could figure out the reason of this SIGABRT?

About to run ./tracer_21Feb2006 ammp.loop_bounds.trace
ammp.mem_ops.trace
Using host libthread_db library "/lib/tls/libthread_db.so.1".

Program received signal SIGABRT, Aborted.
0x00ca8402 in __kernel_vsyscall ()
#0 0x00ca8402 in __kernel_vsyscall ()
#1 0x001697d5 in raise () from /lib/tls/libc.so.6
#2 0x0016b149 in abort () from /lib/tls/libc.so.6
#3 0x005641db in __gnu_cxx::__verbose_terminate_handler ()
from /usr/lib/libstdc++.so.6
#4 0x00561ef1 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.6
#5 0x00561f26 in std::terminate () from /usr/lib/libstdc++.so.6
#6 0x0056206f in __cxa_throw () from /usr/lib/libstdc++.so.6
#7 0x005624bc in operator new () from /usr/lib/libstdc++.so.6
#8 0x0804b0ba in std::vector<mem_op, std::allocator<mem_op> >
::_M_insert_aux
(this=0xbff7a2d0, __position={_M_current = 0xa7fca008},
__x=@0xbff7a240)
at new_allocator.h:81
#9 0x0804a6ec in main (argc=3, argv=0xbff7a554) at stl_vector.h:330

terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc


==========================================
I would really appreciate if anyone could give some pointer or
suggestions!

Your insert in a vector called new, which threw an error. Just look at them
backwards.

9: function main
8: called a std::vector.insert
7: which called new
6: which threw an error

New normally throws an error if it runs out of memory. Just how big is your
object?
 
C

Charlie

Many thanks! The input files are, indeed, very large:

162M ammp.loop_bounds.trace
4.7G ammp.mem_ops.trace

I guess it maybe running out of the limit of 4Gb virtual memory? Is
there a work-arround to solve this problem?

Many thanks!
 
B

Ben Pope

Charlie said:
Many thanks! The input files are, indeed, very large:

162M ammp.loop_bounds.trace
4.7G ammp.mem_ops.trace

I guess it maybe running out of the limit of 4Gb virtual memory? Is
there a work-arround to solve this problem?

Not reading a 4.7GB file into memory would be a good start.

Can you not access the file in much smaller chunks? The usual approach
is to have some meta data about the file you need to access. This meta
data may already be encoded into the file at the beginning or end, or
you may have to parse the file yourself and build the information.

This meta information typically allows you do to random access on the file.

Ben Pope
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top