Mark McClelland
Mark McClelland

Reputation: 5298

WebView native crash: libwebviewchromium.so "Operation not permitted" - ILL_ILLOPC

I'm seeing a lot of crash reports similar to the crash below, and I'm at a loss for how to diagnose the issue.

Crash heading in Google Developer Console:

Native crash at /data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so in /data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so, 26743 failed: Operation not permitted

Crash detail:

Build fingerprint: 
'samsung/trltetmo/trltetmo:5.1.1/LMY47X/N910TUVU2DOK2:user/release-keys'
Revision: '12' ABI: 'arm' pid: 26743, tid: 29439, name:
DedicatedWorker  >>> package-removed <<< signal
4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 0xa3f94e26
    r0 00000053  r1 64499bb1  r2 64499bb1  r3 00000001
    r4 66a99000  r5 a4b2fb94  r6 a4b53e60  r7 5e9fe8dc
    r8 66a99010  r9 5e9fef24  sl 5e9ff128  fp a4b53e60
    ip b6d4d929  sp 5e9fe818  lr a3cfe9d9  pc a3f94e26  cpsr 68030030

backtrace:
    #00 pc 00db3e26  /data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so
ptrace attach to 26743 failed: Operation not permitted
ptrace attach to 26745 failed: Operation not permitted
ptrace attach to 26759 failed: Operation not permitted
ptrace attach to 26760 failed: Operation not permitted
"   "   "   "   "   "   "   "   "   "   "   "   "   "
<repeats all the way down>

All these crash reports have signal 4 (SIGILL), code 1 (ILL_ILLOPC), and the same first line in the backtrace: "#00 pc 00db3e26 /data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so".

I'm seeing it on Android 5.0 and 5.1, across a variety of Samsung devices (Galaxy S5, Galaxy S6, Galaxy S4 Active, Galaxy Note4, etc.). All with the same address of 00db3e26.

Anyone else seeing this? Any help would be appreciated.

Upvotes: 53

Views: 2589

Answers (2)

paulv
paulv

Reputation: 476

It's bit late, but this might help other people debug this in the future:

The SIGILL suggest either a invalid instruction, or more likely: the exiting of a non-void function without a (valid) return value.

The error

ptrace attach to failed: Operation not permitted

can be caused by two things:

  • either a ptrace() - the kernel call - is already attached to the process or thread
  • or the userid trying to do the ptrace() does not have the rights to attach to the process

It is very likely that the two issue's are not directly related.

In general user right problems can best be debugged with a kernel tracer such as strace (man 1 strace), to see what application is trying to open, and why it fails:

shell # strace -s 1024 -f ./application

But in this case it seems that there is not a 'real' permission problem, but a problem inside a function that caused it to crash and try to invoke a debugger such as gdb that tried to attach to the processes without result.

In this case ltrace (man 1 ltrace) would be the better choice, since it will show exactly what functions was called with what params.

shell # ltrace -C ./application

In short: the "Operation not permitted" is likely not related to the error. The original error is likely a (premature) return without a return value, or a incorrect return value.

Upvotes: 0

Bob
Bob

Reputation: 2859

The crash report you provided where the crash occurred in WebView library specifically in libwebviewchromium.so file in devices made by Samsung using Android 5.0 and 5.1.

Crash Details:

Error: Operation not permitted (SIGILL, code 1)

  • Location: /data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so (address 00db3e26)

  • Affected Devices: Having tested a number of devices based on Samsung, it can be concluded that it is best to use devices that work under the Android 5.0 and 5.1 (Galaxy S5, GS6, SG4 Active, Note Edge, etc. )

Potential Causes:

  • It could be that there is a bug in the WebView library that makes an invalid instruction to be executed and consequently lead to the said error; Operation not permitted.
  • It could be tied to some event in WebView or in other components of your app or in the Samsung device’s hardware/software.

Possible Solutions:

1. Update WebView Library :

Make sure that there is no update available for the WebView library. Google might have come up with a patch to the specific crash in such a subsequent version. This can be achieved either through Google play store or if you are using a build tool like Gradle, updating on your application dependencies.

2. Alternatively :

However, if updating is not possible, then based on the type of application, you may have to utilize a workaround.

Some possibilities include:

  • Temporarily removing or modifying particular settings that could be causing the crash in WebView. Turning off the hardware acceleration may solve.
if (Build.VERSION.SDK_INT >= 19) {
    // chromium, enable hardware acceleration
    webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
    // older android version, disable hardware acceleration
    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
  • Find out other ways of accomplishing the tasks for which you have been using the WebView and rewriting your code, such that you completely eliminate its use in particular tasks.

3. Report the Issue :

However, if updating does not solve the problem, think about submitting the crash to the Google’s WebView group. Also, add the crash report that you described here, and all the information how your application is used and how it is possible to reproduce such a crash. You can report issues through the bug tracker:


Additional Notes:

From the crash report the system reported is Android 5.0 and 5.1, it should also be pointed out, this issue may refer not only to these versions. This could equally happen on other Android versions though the probability may not be as frequent as in the latest Android.

Reference links :

Upvotes: 0

Related Questions