我在 Google Play 上有一个相当受欢迎的应用程序,最近因 libwebviewchromium.so 上的一些 native 崩溃而受到冲击。有问题的 webview 没有花哨的东西,只有一个禁用滚动的小登录表单。
当然,这只发生在 Android 4.4+ 上(WebViews 开始基于 Chromium)。有一个崩溃转储:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'motorola/ghost_repw/ghost:4.4.2/KXA20.16-1.24-1.12/12:user/release-keys'
Revision: 'p300'
pid: 22986, tid: 22986
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
r0 00000000 r1 000059ca r2 00000006 r3 00000000
r4 00000006 r5 0000000b r6 000059ca r7 0000010c
r8 6015d758 r9 57735070 sl 57619830 fp 57734ee0
ip 40121384 sp bef3a088 lr 400e60bd pc 400f5068 cpsr 00060010
d0 4373746e65746e6f d1 697242746e65696c
d2 756f68732e656764 d3 69727265764f646c
d4 616f4c6c72556564 d5 43774128676e6964
d6 4373746e65746e6f d7 697242746e65696c
d8 00000000438e8000 d9 0000000043956b80
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 2e6c616e7265746e d17 746f67795a2e736f
d18 616d2e74696e4965 d19 746f67795a286e69
d20 616a2e74696e4965 d21 0a293130363a6176
d22 766c616420746109 d23 65747379732e6b69
d24 0000000000000000 d25 0000000000000000
d26 0000000000000000 d27 0000000000000000
d28 0000000000000000 d29 0000000000000000
d30 0000000000000000 d31 0000000000000000
scr 68000013
backtrace:
#00 pc 00022068 /system/lib/libc.so (tgkill+12)
#01 pc 000130b9 /system/lib/libc.so (pthread_kill+48)
#02 pc 000132cd /system/lib/libc.so (raise+10)
#03 pc 00012003 /system/lib/libc.so
#04 pc 0002191c /system/lib/libc.so (abort+4)
#05 pc 001c46b1 /system/lib/libwebviewchromium.so
#06 pc 001c1c4b /system/lib/libwebviewchromium.so
#07 pc 00196ebd /system/lib/libwebviewchromium.so
#08 pc 0018bd73 /system/lib/libwebviewchromium.so
#09 pc 0018bb8d /system/lib/libwebviewchromium.so
#10 pc 0018bc0d /system/lib/libwebviewchromium.so
#11 pc 008e6c29 /system/lib/libwebviewchromium.so
#12 pc 008e6bcd /system/lib/libwebviewchromium.so
#13 pc 001cf1ef /system/lib/libwebviewchromium.so
#14 pc 001cfcf1 /system/lib/libwebviewchromium.so
#15 pc 001cfe4f /system/lib/libwebviewchromium.so
#16 pc 001dfc57 /system/lib/libwebviewchromium.so
#17 pc 0002034c /system/lib/libdvm.so (dvmPlatformInvoke+112)
#18 pc 00050e6b /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#19 pc 000297e0 /system/lib/libdvm.so
#20 pc 00030ae8 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#21 pc 0002e180 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#22 pc 00063751 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
#23 pc 0006b713 /system/lib/libdvm.so
#24 pc 000297e0 /system/lib/libdvm.so
#25 pc 00030ae8 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#26 pc 0002e180 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#27 pc 0006346d /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
#28 pc 0004ca37 /system/lib/libdvm.so
#29 pc 0004d0f7 /system/lib/libandroid_runtime.so
#30 pc 0004de1b /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+354)
#31 pc 0000105b /system/bin/app_process
code around pc:
400f5048 e8bd00f0 e3700a01 912fff1e e2600000
400f5058 ea006e4c e92d50f0 e3a07f43 ef000000
400f5068 e8bd50f0 e3700a01 912fff1e e2600000
400f5078 ea006e44 e92d50f0 e3a070ee ef000000
400f5088 e8bd50f0 e3700a01 912fff1e e2600000
400f5098 ea006e3c f200429a bf0080b9 f040f891
400f50a8 4001e92d f2c02a04 2a1080a5 8093f2c0
400f50b8 f2c02a20 2a408088 ea4fdb7f f1bc1c92
400f50c8 dd6c0f0a 0600e92d 0f40f1bc f500dd4a
400f50d8 f5016e80 ebae7920 ea4f0e09 ea4f5e4e
400f50e8 f50e5e5e ebbc7e20 dd3b1f9e f04fbfc4
400f50f8 ebd9090a dd35199e 0a0eeb01 0a3ff02a
400f5108 1c9eebac bfd245e1 0c09ebac f04f46e1
400f5118 f8910c00 f891f240 f921f280 f921028d
400f5128 f8da428d f1b93000 f9000901 f900028d
400f5138 f10a428d d1ee0a40 0f00f1bc f5bcd02b
code around lr:
400e609c 447b4b13 42b3e010 6a1ed10e 44784811
400e60ac ec80f7fb ea0ef00d 46224631 efd0f00e
400e60bc d00a3001 e00b2400 2b00681b 480ad1eb
400e60cc 44782403 ec6ef7fb f001e002 6804fa23
400e60dc fa20f001 46206005 bf00bd70 0003b306
400e60ec 0003b2fa 0003b2f2 0003b2ce bf7ef7ff
400e60fc 4a3e4b3d e92d447b b08b43f0 4606589c
400e610c 6823460d 930946a1 fa04f001 8000f8d0
400e611c d0482d00 f0104628 280ff88b d8444604
400e612c ffe4f7ff d1064286 4629200f e8d8f00d
400e613c d03c2800 482ee02e f7fb4478 482debb2
400e614c e0154478 d11342b0 482b6a06 f7fb4478
400e615c 4a2aec2a 46332120 a801447a f9eef013
400e616c a8012101 fd08f01a 46061c42 e011d104
400e617c 28006800 e02cd1e6 46294630 f00d4622
400e618c 1c43e914 d11e4607 f9c4f001 29046801
不幸的是,我无法在实际设备或模拟器上重现此问题,用户反馈也无济于事。不知道为什么会发生这种崩溃。
我已经学会了使用 NDK 工具来解释堆栈跟踪,但我仍然需要一个带有调试符号的 libwebviewchromium.so 版本(最好是在每个用户设备上运行的完全相同的版本)。
那么,问题:
我错过了什么吗?/有人遇到过类似的事情吗?
假设我可以找到正在使用的 libwebviewchromium.so 的版本,是否可以找到带有调试符号的构建,或者我是否需要从头开始编译它们?
谢谢!
最佳答案
这可能是由图形内存错误引起的,因此您可以尝试使用任何 -CSS webkit-transform 禁用某些 CSS,例如“-webkit-transform: rotate(0deg) scaleX(1) scaleY(1);”。 (如果你在 GPU 内存中加载太多数据,我在 iOS 上看到了同样的错误)。
关于android - libwebviewchromium.so 上的 native 代码崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164744/
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的