We have been using the Intel IPP's for many years now (Dialogic was once an Intel Company :)). A few years back we updated to version 7.1.1 and all was well until we ran into some segmentation faults on certain newer systems. The crashes were on systems which supported AVX and AVX2 processors. We found that we were able to work around this by limiting the CPU type to AVX.
We recently updated to IPP 8.2.1 hoping that this limitation would no longer be required. However, we are seeing more frequent segmentation faults on systems which support AVX using the e9 IPP functions.
First, in the crypto libraries. This was from when we were originally using the deprecated functions. Updating to the newer AES API's did not resolve this issue.
Apr 30 08:58:46 sut-1330 kernel: [6765] trap invalid opcode ip:7fe0be224e7a sp:7fde82bc8b80 error:0 in
#0 0x00007fe0be224e7a in e9_EncryptCTR_RIJ128pipe_AES_NI () from /usr/dialogic/data/ssp.mlm
#1 0x00007fde82bc8cd0 in ?? ()
#2 0x00007fe0be22425d in e9_ippsRijndael128EncryptCTR () from /usr/dialogic/data/ssp.mlm
Second . . .
#0 0x00007fb554d4cee1 in e9_owniCopyReplicateBorder_8u_C1R ()
Debug I added indicating the IPP settings being used . . .
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: APInit.c.162:DisplayIPPCPUFeatures: 0x46 : 0x46
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: APInit.c.175:DisplayIPPCPUFeatures: Limiting from 0x46 to 0x46
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: ippCore 8.2.1 (r44077)
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: ippIP AVX (e9) 8.2.1 (r44077)
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: ippSP AVX (e9) 8.2.1 (r44077)
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: ippVC AVX (e9) 8.2.1 (r44077)
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: Processor supports Advanced Vector Extensions instruction set
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: 8 cores on die
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: ippGetMaxCacheSizeB 20480 k
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: Available 0xfdf Enabled 0xfdf
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: MMX A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: SSE A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: SSE2 A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: SSE3 A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: SSSE3 A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: MOVBE X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: SSE41 A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: SSE42 A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: AVX A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: AVX(OS) A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: AES A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: CLMUL A E
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: ABR X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: RDRRAND X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: F16C X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: AVX2 X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: ADCOX X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: RDSEED X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: PREFETCHW X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: SHA X X
Apr 30 08:57:07 sut-1330 ssp_x86Linux_boot: KNC X X
We use gcc for building our product which links with the IPP libs.
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
Copyright (C) 2006 Free Software Foundation, Inc.
redhat-release-5Server-5.4.0.3
redhat-release-notes-5Server-29