Segmentation fault
 
The following code sometimes runs OK in my system, sometimes it produces 
a segmentation fault (access to inaccessible memory). I filled it as a 
bug of GCC, but am posting it here in case I did something wrong.
The segmentation fault happens when the SomeClass copy constructor is used:
#include <iostream>
#include <ctime>
#include <vector>
#include <list>
#include <cstddef>
#include <algorithm>
class SomeClass
{
     public:
     typedef std::vector<int> TypeVector;
     TypeVector vec;
     enum { VectorSize= 100 };
     public:
     SomeClass();
     SomeClass(const SomeClass &);
     bool operator<(const SomeClass &argSomeClass) const
     {
         return vec[0]< argSomeClass.vec[0];
     }
};
int main()
{
     using namespace std;
     srand(time(0));
     const size_t SIZE=1000;
     typedef vector<SomeClass> Vector;
     typedef list<SomeClass> List;
     cout<< "\nCreating vector with "<< SIZE<< " elements..."<< flush;
     Vector vec(SIZE);
     cout<<"   Done!\n\n"<< flush;
     List lis;
     cout<< "Filling list with vector elements..."<< flush;
     for(Vector::size_type i= 0; i< vec.size(); ++i)
         lis.push_back(vec[i]);
     cout<< "   Done!\n\n"<< flush;
     clock_t timeBeginVector, timeEndVector, timeBeginList, timeEndList;
     cout<< "Timing the sorting of the vector..."<< flush;
     // Diagnostic code line. Should output 1000 and 100
     // cout<< endl<< vec.size()<< endl<< vec[0].vec.size()<< endl;
     timeBeginVector= clock();
     sort(vec.begin(), vec.end());
     timeEndVector= clock();
     cout<< "   Done!\n\n"<< flush;
     cout<< "Timing the sorting of the list..."<< flush;
     timeBeginList= clock();
     lis.sort();
     timeEndList= clock();
     cout<< "   Done!\n\n"<< flush;
     cout<< "The sorting of the vector took "
         <<  static_cast<double>((timeEndVector- timeBeginVector))/
CLOCKS_PER_SEC
         << " seconds\n\n";
     cout<< "The sorting of the list took "
         << static_cast<double>((timeEndList- timeBeginList))/ 
CLOCKS_PER_SEC
         << " seconds\n\n";
}
SomeClass::SomeClass():vec(VectorSize)
{
     using namespace std;
     for(TypeVector::size_type i= 0; i< vec.size(); ++i)
         vec[i]= rand();
     sort(vec.begin(), vec.end());
}
SomeClass::SomeClass(const SomeClass &):vec(VectorSize)
{
     using namespace std;
     for(TypeVector::size_type i= 0; i< vec.size(); ++i)
         vec[i]= rand();
     sort(vec.begin(), vec.end());
}