tikcireviva wrote:
I am not sure what's wrong with my program.
We're not sure either. You can see it. We cannot.
When I ran it under the
GDB, it shows the following messages , which said that the issue is
from stl_list.h. Does anyone know what's happening in here?
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1540594608 (LWP 1661)]
dist_obj::insert_list (this=0x82d3980, priority=23704) at
stl_list.h:116
116 { _M_node = _M_node->_M_next; }
Most likely either 'this' or 'this->_M_node' is an invalid pointer.
In my dist_obj::insert_list() , it just insert an character array into
How is that character array created? Is it dynamic? Is it automatic?
the list, and on the other thread, it gets a copy of the entire list,
then clear the list, and do some manipulation.
Threading is off-topic, unfortunately. C++ assumes a single thread,
a single process, on a single processor machine. All definitions in
the language are based on that.
It is quite possible, though, that your problem is not related to
threading. Does it happen if you don't use threads? Have you actually
tried your algorithm synchronously before you introduced threads?
I also though about that if this is because of lack of memory on my
machine. I ain't sure how to check that though.
Change the test case to something smaller (if possible). Watch the
memory consumption of your process. Run it under 'valgrind' or some
other memory debugging tool. But don't spend too much time on it,
unless you actually work with rather large datasets. Most likely
your problem is elsewhere.
I am using GCC 3.3.3. on my FC2 machine.
That's irrelevant, most often. We here discuss the language, not the
environment in which it's used.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask