Dear petsc team, I've been struggling with this problem for a long time and seeking for your advice now. Let's take simple petsc program: #include <petscksp.h> int main(int argc,char **args) { Vec b; PetscReal norm; PetscInitialize(&argc,&args,(char *)0,NULL); VecCreateSeq(PETSC_COMM_SELF,100,&b); VecSet(b,2.0); VecNorm(b,NORM_1_AND_2,&norm); return 0; } This program works well if I compile petsc with non-mkl blas/lapack. However, if I compile petsc with mkl blas/lapack this program crashes: zdotc, FP=7fff8f121e30 VecNorm_Seq, FP=7fff8f121f90 VecNorm_Seq, FP=7fff8f1220f0 VecNorm, FP=7fff8f122230 main, FP=7fff8f122290 It crashes in zdotc. You call this routine as following: *z = BLASdot_(&bn,xx,&one,xx,&one); When I look at the zdotc interface in mkl.h I see: void ZDOTC(MKL_Complex16 *pres, const MKL_INT *n, const MKL_Complex16 *x, const MKL_INT *incx, const MKL_Complex16 *y, const MKL_INT *incy); I also found example here: http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl... There are 6 input parameters. But in "classical" BLAS implementation 5 input and 1 output. For example, NORM_1 works well since interface to dzasum is the same. Any ideas? -- Regards, Alexander