schwabe / ics-openvpn

OpenVPN for Android
3.29k stars 1.19k forks source link

0.7.46 keepalive tasks crashes on API 23 (Android 6) #1619

Closed 2011 closed 1 year ago

2011 commented 1 year ago

To make issues more manageable, I would appreciate it if you fill out the following details as applicable:

General information

  1. Android Version: 6.0.1
  2. Android Vendor/Custom ROM: LineageOS 13.0-20170803-UNOFFICIAL
  3. Device: Bluboo Maya Max (phone)
  4. Version of the app (version number/play store version/self-built): 0.7.46

Description of the issue

Updated from 0.7.43 (worked for months without any issue)

Log (if applicable)

[06-11 14:32:48.313 598:2173 I/ActivityManager]
START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10300000 cmp=de.blinkt.openvpn/.activities.MainActivity (has extras)} from uid 10026 on display 0

[06-11 14:32:48.398 598:2064 I/ActivityManager]
Start proc 10280:de.blinkt.openvpn/u0a122 for activity de.blinkt.openvpn/.activities.MainActivity

[06-11 14:32:48.744 10280:10280 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda0>

[06-11 14:32:48.745 10280:10280 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda0>

[06-11 14:32:48.796 598:2052 I/ActivityManager]
Start proc 10295:de.blinkt.openvpn:openvpn/u0a122 for service de.blinkt.openvpn/.core.OpenVPNStatusService

[06-11 14:32:49.114 10295:10295 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda0>

[06-11 14:32:49.115 10295:10295 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda0>

[06-11 14:32:49.730 598:684 I/ActivityManager]
Displayed de.blinkt.openvpn/.activities.MainActivity: +1s358ms

[06-11 14:32:51.094 598:2052 I/ActivityManager]
START u0 {act=android.intent.action.MAIN cmp=de.blinkt.openvpn/.LaunchVPN (has extras)} from uid 10122 on display 0

[06-11 14:32:51.137 598:2383 I/ActivityManager]
START u0 {flg=0x20000 cmp=de.blinkt.openvpn/.activities.LogWindow} from uid 10122 on display 0

[06-11 14:32:51.492 598:684 I/ActivityManager]
Displayed de.blinkt.openvpn/.activities.LogWindow: +324ms (total +383ms)

[06-11 14:32:51.606 10295:10333 E/AndroidRuntime]
FATAL EXCEPTION: OpenVPNServiceCommandThread
Process: de.blinkt.openvpn:openvpn, PID: 10295
Theme: themes:{}
java.lang.NoSuchMethodError: No static method getMinPeriodMillis()J in class Landroid/app/job/JobInfo; or its super classes (declaration of 'android.app.job.JobInfo' appears in /system/framework/framework.jar)
        at de.blinkt.openvpn.core.keepVPNAlive.scheduleKeepVPNAliveJobService(keepVPNAlive.java:91)
        at de.blinkt.openvpn.core.OpenVPNService.startOpenVPN(OpenVPNService.java:597)
        at de.blinkt.openvpn.core.OpenVPNService.lambda$onStartCommand$1(OpenVPNService.java:528)
        at de.blinkt.openvpn.core.OpenVPNService.$r8$lambda$IpnoXQuUdAqLyN_KkgVN5F6PdZY(OpenVPNService.java)
        at de.blinkt.openvpn.core.OpenVPNService$$ExternalSyntheticLambda2.run(D8$$SyntheticClass)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.os.HandlerThread.run(HandlerThread.java:61)

[06-11 14:32:53.730 598:2384 I/ActivityManager]
Process de.blinkt.openvpn:openvpn (pid 10295) has died

[06-11 14:32:53.731 598:2384 W/ActivityManager]
Scheduling restart of crashed service de.blinkt.openvpn/.core.OpenVPNStatusService in 1000ms

[06-11 14:32:53.731 598:2384 W/ActivityManager]
Scheduling restart of crashed service de.blinkt.openvpn/.core.OpenVPNService in 11000ms

[06-11 14:32:54.751 598:622 I/ActivityManager]
Start proc 10343:de.blinkt.openvpn:openvpn/u0a122 for service de.blinkt.openvpn/.core.OpenVPNStatusService

[06-11 14:32:55.047 10343:10343 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda0>

[06-11 14:32:55.048 10343:10343 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda0>

[06-11 14:32:55.465 10343:10359 E/AndroidRuntime]
FATAL EXCEPTION: OpenVPNServiceCommandThread
Process: de.blinkt.openvpn:openvpn, PID: 10343
Theme: themes:{}
java.lang.NoSuchMethodError: No static method getMinPeriodMillis()J in class Landroid/app/job/JobInfo; or its super classes (declaration of 'android.app.job.JobInfo' appears in /system/framework/framework.jar)
        at de.blinkt.openvpn.core.keepVPNAlive.scheduleKeepVPNAliveJobService(keepVPNAlive.java:91)
        at de.blinkt.openvpn.core.OpenVPNService.startOpenVPN(OpenVPNService.java:597)
        at de.blinkt.openvpn.core.OpenVPNService.lambda$onStartCommand$1(OpenVPNService.java:528)
        at de.blinkt.openvpn.core.OpenVPNService.$r8$lambda$IpnoXQuUdAqLyN_KkgVN5F6PdZY(OpenVPNService.java)
        at de.blinkt.openvpn.core.OpenVPNService$$ExternalSyntheticLambda2.run(D8$$SyntheticClass)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.os.HandlerThread.run(HandlerThread.java:61)

[06-11 14:32:57.057 598:2384 I/ActivityManager]
Process de.blinkt.openvpn:openvpn (pid 10343) has died

[06-11 14:32:57.058 598:2384 W/ActivityManager]
Service crashed 2 times, stopping: ServiceRecord{2b06440 u0 de.blinkt.openvpn/.core.OpenVPNStatusService}

[06-11 14:32:57.058 598:2384 W/ActivityManager]
Service crashed 2 times, stopping: ServiceRecord{22118e9 u0 de.blinkt.openvpn/.core.OpenVPNService}

Configuration file

# Config for OpenVPN 2.x
# Enables connection to GUI
management /data/user/0/de.blinkt.openvpn/cache/mgmtsocket unix
management-client
management-query-passwords
management-hold

setenv IV_GUI_VER "de.blinkt.openvpn 0.7.46" 
setenv IV_SSO openurl,webauth,crtext
setenv IV_PLAT_VER "23 6.0.1 arm64-v8a Bluboo pri6750_66t_m Bluboo Maya Max"
setenv IV_HWADDR [redacted]
providers legacy default
tls-cert-profile legacy
machine-readable-output
allow-recursive-routing
ifconfig-nowarn
client
verb 4
connect-retry 2 300
resolv-retry 60
dev tun
remote [redacted]
<ca>
[redacted]
</ca>
<key>
[redacted]
</key>
<cert>
[redacted]
</cert>
comp-lzo
nobind
remote-cert-tls server
data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC
cipher AES-256-CBC
float
persist-tun
# persist-tun also enables pre resolving to avoid DNS resolve problem
preresolve
# Use system proxy setting
management-query-proxy
# Custom configuration options
# You are on your on own here :)
# These options found in the config file do not map to config settings:
mute 20 
compress lzo 
resolv-retry infinite 
keepalive 10 120
schwabe commented 1 year ago

Yes that is an oversight. The method is only available after API 24. https://developer.android.com/reference/android/app/job/JobInfo#getMinPeriodMillis()

As a workaround or now until I fix/upload a new version to avoid the crash you can disable the always on functionality under general settings in the app.

2011 commented 1 year ago

@schwabe 0.7.48 still does not work on Android 6

[08-04 10:43:01.360 476:488 I/ActivityManager]
START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10300000 cmp=de.blinkt.openvpn/.activities.MainActivity (has extras)} from uid 10175 on display 0

[08-04 10:43:01.425 476:8463 I/ActivityManager]
Start proc 9263:de.blinkt.openvpn/u0a175 for activity de.blinkt.openvpn/.activities.MainActivity

[08-04 10:43:01.724 9263:9263 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda10>

[08-04 10:43:01.725 9263:9263 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda10>

[08-04 10:43:02.152 476:8463 I/ActivityManager]
Start proc 9277:de.blinkt.openvpn:openvpn/u0a175 for service de.blinkt.openvpn/.core.OpenVPNStatusService

[08-04 10:43:02.405 9277:9277 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda10>

[08-04 10:43:02.414 9277:9277 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda10>

[08-04 10:43:04.293 476:495 I/ActivityManager]
Displayed de.blinkt.openvpn/.activities.MainActivity: +2s895ms

[08-04 10:43:10.699 476:1751 I/ActivityManager]
START u0 {act=android.intent.action.MAIN cmp=de.blinkt.openvpn/.LaunchVPN (has extras)} from uid 10175 on display 0

[08-04 10:43:10.772 476:1706 I/ActivityManager]
START u0 {flg=0x20000 cmp=de.blinkt.openvpn/.activities.LogWindow} from uid 10175 on display 0

[08-04 10:43:11.413 140:1828 E/BufferQueueProducer]
[de.blinkt.openvpn/de.blinkt.openvpn.activities.LogWindow] allocateBuffers: slot 2 without buffer is not FREE

[08-04 10:43:11.851 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:11.851 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:11.862 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:11.865 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:11.865 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:11.869 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:11.869 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:11.873 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:11.873 9277:9300 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:12.480 9277:9300 E/AndroidRuntime]
FATAL EXCEPTION: OpenVPNServiceCommandThread
Process: de.blinkt.openvpn:openvpn, PID: 9277
Theme: themes:{}
java.lang.NoSuchMethodError: No virtual method setPeriodic(JJ)Landroid/app/job/JobInfo$Builder; in class Landroid/app/job/JobInfo$Builder; or its super classes (declaration of 'android.app.job.JobInfo$Builder' appears in /system/framework/framework.jar)
    at de.blinkt.openvpn.core.LocaleHelper$$ExternalSyntheticApiModelOutline0.m(D8$$SyntheticClass)
    at de.blinkt.openvpn.core.keepVPNAlive.scheduleKeepVPNAliveJobService(keepVPNAlive.java:94)
    at de.blinkt.openvpn.core.OpenVPNService.startOpenVPN(OpenVPNService.java:599)
    at de.blinkt.openvpn.core.OpenVPNService.lambda$onStartCommand$2(OpenVPNService.java:530)
    at de.blinkt.openvpn.core.OpenVPNService.$r8$lambda$T-Dsehw7mwNrBu25oDY3B9NDZdE(OpenVPNService.java)
    at de.blinkt.openvpn.core.OpenVPNService$$ExternalSyntheticLambda16.run(D8$$SyntheticClass)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.os.HandlerThread.run(HandlerThread.java:61)

[08-04 10:43:12.562 476:495 I/ActivityManager]
Displayed de.blinkt.openvpn/.activities.LogWindow: +1s737ms (total +1s842ms)

[08-04 10:43:15.121 476:7268 I/ActivityManager]
Process de.blinkt.openvpn:openvpn (pid 9277) has died

[08-04 10:43:15.122 476:7268 W/ActivityManager]
Scheduling restart of crashed service de.blinkt.openvpn/.core.OpenVPNService in 1000ms

[08-04 10:43:15.122 476:7268 W/ActivityManager]
Scheduling restart of crashed service de.blinkt.openvpn/.core.OpenVPNStatusService in 11000ms

[08-04 10:43:16.149 476:490 I/ActivityManager]
Start proc 9310:de.blinkt.openvpn:openvpn/u0a175 for service de.blinkt.openvpn/.core.OpenVPNService

[08-04 10:43:16.386 9310:9310 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda10>

[08-04 10:43:16.388 9310:9310 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.core.ICSOpenVPNApplication$$ExternalSyntheticLambda10>

[08-04 10:43:17.204 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.204 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.223 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.228 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.228 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.238 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.238 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.242 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.243 9310:9324 I/art]
Rejecting re-init on previously-failed class java.lang.Class<de.blinkt.openvpn.OpenVPNTileService>

[08-04 10:43:17.256 9310:9324 E/AndroidRuntime]
FATAL EXCEPTION: OpenVPNServiceCommandThread
Process: de.blinkt.openvpn:openvpn, PID: 9310
Theme: themes:{}
java.lang.NoSuchMethodError: No virtual method setPeriodic(JJ)Landroid/app/job/JobInfo$Builder; in class Landroid/app/job/JobInfo$Builder; or its super classes (declaration of 'android.app.job.JobInfo$Builder' appears in /system/framework/framework.jar)
    at de.blinkt.openvpn.core.LocaleHelper$$ExternalSyntheticApiModelOutline0.m(D8$$SyntheticClass)
    at de.blinkt.openvpn.core.keepVPNAlive.scheduleKeepVPNAliveJobService(keepVPNAlive.java:94)
    at de.blinkt.openvpn.core.OpenVPNService.startOpenVPN(OpenVPNService.java:599)
    at de.blinkt.openvpn.core.OpenVPNService.lambda$onStartCommand$2(OpenVPNService.java:530)
    at de.blinkt.openvpn.core.OpenVPNService.$r8$lambda$T-Dsehw7mwNrBu25oDY3B9NDZdE(OpenVPNService.java)
    at de.blinkt.openvpn.core.OpenVPNService$$ExternalSyntheticLambda16.run(D8$$SyntheticClass)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.os.HandlerThread.run(HandlerThread.java:61)

[08-04 10:43:25.699 476:487 I/ActivityManager]
Process de.blinkt.openvpn:openvpn (pid 9310) has died

[08-04 10:43:25.700 476:487 W/ActivityManager]
Service crashed 2 times, stopping: ServiceRecord{e2f4f8b u0 de.blinkt.openvpn/.core.OpenVPNService}

[08-04 10:43:25.700 476:487 W/ActivityManager]
Service crashed 2 times, stopping: ServiceRecord{704b3d9 u0 de.blinkt.openvpn/.core.OpenVPNStatusService}