Ask Your Question
0

Glibc detected

asked 2013-06-30 19:36:11 -0500

residentelvio gravatar image

Hi people I have this error entering a function: (really the error lines are more than this I put)

  *** glibc detected *** /home/elvio/workspace/aws/Debug/aws: double free or corruption    (!prev): 0x0000000001eff100 ***
  ======= Backtrace: =========
  /lib/x86_64-linux-gnu/libc.so.6(+0x7eb96)[0x7f950c739b96]
  /home/elvio/workspace/aws/Debug/aws[0x40afde] 
  /home/elvio/workspace/aws/Debug/aws[0x40a940]
  /home/elvio/workspace/aws/Debug/aws[0x409f3b]
  /home/elvio/workspace/aws/Debug/aws(_ZNSt6vectorId

The function is : (I print Welcome to see in console I enter in the function)

   void pre_filter_Computations(vector< vector<double> > radius,vector< vector<double> > theta,int cols,int rows){

   vector<double>x(cols);
   vector<double>y(rows);
   vector< vector<double> >X(cols, vector<double>(rows));
   vector< vector<double> >Y(cols, vector<double>(rows));
   double epsilon = 0.0001;

   printf("welcome\n");

   for(int i=0;i<cols;i++){
   x[i]=((double)(i-cols)/2)/((double)cols/2);
   }

   for(int z=0;z<rows;z++){
   y[z]=-(((double)(z-rows)/2)/((double)rows/2));
   }

   for(int m=0;m<cols;m++){
      for(int n=0;n<rows;n++){

        X[m][n]=x[m];
        Y[m][n]=y[n];
     }
   }

   for(int a=0;a<rows;a++){
        for(int b=0;b<cols;b++){

             X[a][b] = pow(X[a][b],2);
             Y[a][b] = pow(Y[a][b],2);
             X[a][b] = X[a][b] + Y[a][b];
              radius[a][b] = sqrt(X[a][b]);

        }
    }

    radius[rows/2][cols/2]=1;

    for(int a=0;a<rows;a++){
       for(int b=0;b<cols;b++){
           radius [a][b]= radius[a][b] + epsilon;
           theta[a][b] = atan2(Y[a][b],X[a][b])*180/PI;
       }
    }
edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
1

answered 2013-07-02 18:18:24 -0500

CodeFinder gravatar image

I cannot see any problems in your code. The issue have to be related to calling free/delete on a pointer more than once (as the error message states).

You should use a debugger (with the -g flag) to step through your code. When the glibc detects your invalid free call, the debugger halts and you can inspect the backtrace. Hopefully, the backtrace gives you more information about your problem.

However, this problem does not seem to be OpenCV-related.

HTH ;-)

edit flag offensive delete link more
Login/Signup to Answer

Question Tools

Stats

Asked: 2013-06-30 19:36:11 -0500

Seen: 485 times

Last updated: Jul 02 '13