Community
cancel
Showing results for 
Search instead for 
Did you mean: 
mmmmm__hamed
Beginner
76 Views

mkl_freeBuffer() access violation exception error

hi 

i use mkl c++ compiler 11.0.066 and mkl10.1 and c++/clr vs2008

i use fft and conv function from mkl in multi thread realtime application (each thread exec fft and conv parallel)

but after little time usage memory go up and application crash.

with any leak detector i cant find any leakage in my code .

recently i study mkl help and find i must use mkl_FreeBuffer() after mkl function for avoidance memory leakage

but when i call mkl_freeBuffer Application crash with access violation exception.

what shoud i do?

i use 64 bit mkl

 additional library directory  -> em64t\lib 

additional dependecy -> mkl_intel_lp64_dll.lib   ;    mkl_intel_thread_dll.lib     ;  mkl_core_dll.lib

thanks for you.

0 Kudos
8 Replies
Bernard
Black Belt
76 Views

Do you have callstack info?

Judith_W_Intel
Employee
76 Views

 

This question would probably be more appropriate for the MKL forum not the compiler forum.

https://software.intel.com/en-us/forums/intel-math-kernel-library

Good luck,

Judy

Kittur_G_Intel
Employee
76 Views

Hi,

I'll transfer this issue to MKL forum so someone from that group can address this accordingly....

_Kittur

Gennady_F_Intel
Moderator
76 Views

Can you give us the example of your test which we can compile and check the problem with the latest version of MKL?

or you can try to evaluate the latest updates by yourself.

mmmmm__hamed
Beginner
76 Views

this is my code 

mkl_complex16*  intelForwardFft (MKL_Complex16* input,int length)

{

            DFTI_DESCRIPTOR *fft_handle;

           dfticreatedescriptor(&fft_handle,dfti_double,dfti_complex,1,length) ;

           dftisetvalue(fft_handle,dfti_placement,dfti_inplace);

          dfti_computeforward(fft_handle,input);

          dftifreedescriptor(&fft_handle);

          mkl_FreeBuffers();

          return input;     ===>cursor stop here

}

MKL_Complex16*  Convolution(MKL_Complex16*  x,int   xlength, MKL_Complex16*  y  ,  int ylength )

{

          int convResLength=xlength+ylength-1;

          VSLCONVTASKPTR   task;

           VSLCONVTASKPTR*   task-ptr;

           int   iy0=0;

           int   *start=&iy0;

           MKL_Complex16* res= (MKL_Complex16*)  malloc(sizeof(MKL_Complex16)  *  convResLength);

           memset( res,  0 ,  sizeof(MKL_Complex16) * ConvResLength );

           int status;

           int   a= vslzConvNewTask1D( task_ptr , VSL_Conv_Mode_Auto , xlength , ylength ,convResLength  );

           int  b = vslzConvSetStart( task  , start);

           status  = vslzConvExec1D( task , x ,1 , y ,1, res , 1 );

           vslconvdeletetask(task_ptr);

           mkl_FreeBuffers();

           return res;

}

Bernard
Black Belt
76 Views

>>>but when i call mkl_freeBuffer Application crash with access violation exception>>>

Probably heap corruption or double free.

mmmmm__hamed
Beginner
76 Views

Hi iliyapolak my code exist in above comment . no double free.

only function Result ( res variable ) will be released after use. 

are you have idea?       

Bernard
Black Belt
76 Views

Without the callstack of crash is very hard to tell what has happend

Reply