삼성 갤럭시 J5, 안드로이드 6.0.1, 커널 3.10.49-11903637, 빌드 MMB29M.J510FNXXU2AQG3 GPU Adreno 306 및 Nexus 4 -GPU Adreno 320. 비트 맵에서 두 번의 필터링을 수행하여 비트 맵의 선명도를 계산하려고합니다. 샘플 비트 맵의 샘플 크기는 성능을 위해 64x64 이하의 크기로 사용됩니다. 동일한 코드는 삼성 Galaxy S6, Sony Xperia Z3, Samsung Galaxy Tab 10.1 (2016), Huawei P10에서 잘 작동합니다. 입력 매개 변수를 변경하려고했지만 다른 이미지와 다른 계수를 사용했지만 J5에서는 항상 충돌합니다.Android RenderScript 신호 7 (SIGBUS), 코드 1 (BUS_ADRALN), 오류 addr 0x76f458b4 Adreno 306, 320
업데이트 : 다른 장치에서 촬영 한 사진의 경우 세로로 회전하면 (너비보다 큰 높이) 성공적으로 통과합니다. 그러나 같은 장치에서 찍은 사진은 내가 회전시키는 방법을 손상시키지 않습니다. 이 마지막 줄에
val options = BitmapFactory.Options()
options.inJustDecodeBounds = true
BitmapFactory.decodeFile(imagePath, options)
val imageSize = SizeT(options.outWidth, options.outHeight)
val imageScale = imageSize.scaleToFitInSize(SizeT(64, 64))
val imageScaledSize = imageSize.scale(imageScale.toDouble())
options.inJustDecodeBounds = false
options.inSampleSize = ImageUtils.calculateInSampleSize(imageSize, imageScaledSize, 1.0)
val sourceBitmap = BitmapFactory.decodeFile(imagePath, options)
var sobelScript: ScriptC_sobel? = null
var inputAllocation: Allocation? = null
var outputAllocation: Allocation? = null
var intermediateAllocation: Allocation? = null
var convolve3x3: ScriptIntrinsicConvolve3x3? = null
var renderScript: RenderScript? = null
val imageWidth = sourceBitmap.width
val imageHeight = sourceBitmap.height
renderScript = RenderScript.create(ApplicationContext.ApplicationContext())
inputAllocation = Allocation.createFromBitmap(renderScript, sourceBitmap)
val typeInBuilder = Type.Builder(renderScript, Element.F32_4(renderScript)).setX(imageWidth).setY(imageHeight )
// Allocation where to store the sum result (for output purposes)
val coefficientsGx = floatArrayOf(-1f, 0f, 1f, -2f, 0f, 2f, -1f, 0f, 1f)
val coefficientsGy = floatArrayOf(-1f, -2f, -1f, 0f, 0f, 0f, 1f, 2f, 1f)
intermediateAllocation = Allocation.createTyped(renderScript, typeInBuilder.create())
convolve3x3 = ScriptIntrinsicConvolve3x3.create(renderScript, Element.F32_4(renderScript))
convolve3x3.setInput(inputAllocation)
convolve3x3.setCoefficients(coefficientsGx)
convolve3x3.forEach(intermediateAllocation)
이 프로그램은 원시 오류로 충돌 :
? D/NetworkController.MobileSignalController(0/2147483643): onSignalStrengthsChanged signalStrength=SignalStrength: 26 99 -120 -160 -120 -1 -1 99 2147483647 2147483647 2147483647 -1 2147483647 0x4 gsm|lte level=4
2302-2671/? D/NetworkController.MobileSignalController(0/2147483643): getMobileIconGroup(): 0
16440-17400/ A/libc: Fatal signal 7 (SIGBUS), code 1, fault addr 0x76f458b4 in tid 17400 (AsyncTask #4)
16440-17398/ A/libc: Fatal signal 7 (SIGBUS), code 1, fault addr 0x76f456d4 in tid 17398 (AsyncTask #4)
16440-17398/ I/libc: Another thread contacted debuggerd first; not contacting debuggerd.
16440-17399/ A/libc: Fatal signal 7 (SIGBUS), code 1, fault addr 0x76f45404 in tid 17399 (AsyncTask #4)
16440-17399/ I/libc: Another thread contacted debuggerd first; not contacting debuggerd.
16440-17396/ A/libc: Fatal signal 7 (SIGBUS) in tid 17396 (AsyncTask #4)
16440-17396/I/libc: Another thread contacted debuggerd first; not contacting debuggerd.
400-400/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
400-400/? A/DEBUG: Build fingerprint: 'samsung/j5xnltexx/j5xnlte:6.0.1/MMB29M/J510FNXXU2AQG3:user/release-keys'
400-400/? A/DEBUG: Revision: '4'
400-400/? A/DEBUG: ABI: 'arm'
400-400/? A/DEBUG: pid: 16440, tid: 17400, name: AsyncTask #4 >>> com.test.development <<<
400-400/? A/DEBUG: signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x76f458b4
400-400/? A/DEBUG: r0 0000003b r1 00000000 r2 b8ceb4a0 r3 76f458b4
400-400/? A/DEBUG: r4 76f458b4 r5 9b68a7f8 r6 b8ceb4a0 r7 00000000
400-400/? A/DEBUG: r8 0000003c r9 76f459a4 sl 76f458b4 fp 76f45a94
400-400/? A/DEBUG: ip b8cb3c14 sp 9b68a7b0 lr 00000001 pc 9cff66d8 cpsr 200f0030
400-400/? A/DEBUG: backtrace:
400-400/? A/DEBUG: #00 pc 0002d6d8 /system/lib/libRSCpuRef.so
400-400/? A/DEBUG: #01 pc 0002d68b /system/lib/libRSCpuRef.so (_ZN7android12renderscript32RsdCpuScriptIntrinsicConvolve3x38kernelF4EPK24RsExpandKernelDriverInfojjj+122)
400-400/? A/DEBUG: #02 pc 0001f1f5 /system/lib/libRSCpuRef.so
400-400/? A/DEBUG: #03 pc 0001eb67 /system/lib/libRSCpuRef.so (_ZN7android12renderscript19RsdCpuReferenceImpl16helperThreadProcEPv+138)
400-400/? A/DEBUG: #04 pc 00041813 /system/lib/libc.so (_ZL15__pthread_startPv+30)
400-400/? A/DEBUG: #05 pc 00019315 /system/lib/libc.so (__start_thread+6)
com.test.development A/libc: Fatal signal 7 (SIGBUS) in tid 3368 (AsyncTask #4)
? E/audit: type=1701 msg=audit(1509449660.557:282): auid=4294967295 uid=10133 gid=10133 ses=4294967295 subj=u:r:untrusted_app:s0:c512,c768 pid=3371 comm=4173796E635461736B202334 reason="memory violation" sig=7