关于多线程编程 glibc detected double free or corruption解决思路

关于多线程编程 glibc detected double free or corruption
我写了个程序,里面用到openmp生成多线程, 我把多线程去掉,就不会报错, 一旦我把多线程加上去,它就会报如下错误

*** glibc detected *** ./MPOTU3: double free or corruption (top): 0xb5e004b8 ***
======= Backtrace: =========
/lib/libc.so.6[0x363595]
/lib/libc.so.6(cfree+0x59)[0x3639d9]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x66e581]
/usr/lib/libstdc++.so.6(_ZNSs4_Rep10_M_destroyERKSaIcE+0x1d)[0x64b14d]
/usr/lib/libstdc++.so.6(_ZNSs9_M_mutateEjjj+0x1b5)[0x64cf75]
/usr/lib/libstdc++.so.6(_ZNSs12_M_leak_hardEv+0x61)[0x64d9a1]
/usr/lib/libstdc++.so.6(_ZNSsixEj+0x31)[0x64da71]
./MPOTU3[0x804db4a]
/usr/lib/libgomp.so.1[0x16f23c]
/lib/libpthread.so.0[0x2e85ab]
/lib/libc.so.6(clone+0x5e)[0x3cbcfe]
======= Memory map: ========
00149000-00163000 r-xp 00000000 08:01 168692103  /lib/ld-2.5.so
00163000-00164000 r--p 00019000 08:01 168692103  /lib/ld-2.5.so
00164000-00165000 rw-p 0001a000 08:01 168692103  /lib/ld-2.5.so
00167000-00174000 r-xp 00000000 08:01 125846106  /usr/lib/libgomp.so.1.0.0
00174000-00175000 rw-p 0000c000 08:01 125846106  /usr/lib/libgomp.so.1.0


基本定位后发现,应该是加了多线程后出错, 部分源码

[align=left]string sseq = getseq(*cu);
                        long vsize = tvector.size();
                        mis.resize(vsize);
                        #pragma omp parallel for num_threads(4)
                        for(long i=0; i < vsize; i++)
                        {
                                string qseq = tvector[i].first;
                                int Mismatch = 0;
                                int len = qseq.size() > sseq.size() ? qseq.size() : sseq.size();
                                for(int j = 0; j < len; j++)
                                {
                                        if(qseq[j] != sseq[j])
                                        {