【问题标题】:What does this stack trace mean?这个堆栈跟踪是什么意思?
【发布时间】:2015-05-14 18:47:45
【问题描述】:
Devices tested on: Samsung S4, Ipad
Browsers : Chrome and Safari for mobile
Server : JBOSS 
Export type: war

Chrome 和 Safari(移动)在我的应用程序正常使用期间间歇性崩溃。我向谷歌发送了一份崩溃报告并收到了回复: 线程 16 崩溃 [SIGABRT @ 0x000056e7] 魔法签名线程

0x40140134      [libc.so + 0x00022134 ] 
0x4013118b      [libc.so + 0x0001318b ] 
0x4013139f      [libc.so + 0x0001339f ] 
0x401300d5      [libc.so + 0x000120d5 ] 
0x4013f9ea      [libc.so + 0x000219ea ] 
0x64b07dd7      [dalvik-mark-stack (deleted) + 0x0222bdd7 ]     
0x40130bbb      [libc.so + 0x00012bbb ] 
0x4015e14d      [libc.so + 0x0004014d ] 
0x4012d2c7      [libc.so + 0x0000f2c7 ] 
0x4015e14d      [libc.so + 0x0004014d ] 
0x40161d2e      [libc.so + 0x00043d2e ] 
0x4012e1d3      [libc.so + 0x000101d3 ] 
0x4012df73      [libc.so + 0x0000ff73 ] 
0x4012bcff      [libc.so + 0x0000dcff ] 
0x78264ae7      [libchrome.2214.109.so -sqlite3.c:14539 ]       sqlite3MemRoundup
0x78264af7      [libchrome.2214.109.so -sqlite3.c:14468 ]       sqlite3MemMalloc
0x78264a8b      [libchrome.2214.109.so -sqlite3.c:17981 ]       mallocWithAlarm
0x78264a15      [libchrome.2214.109.so -sqlite3.c:18014 ]       sqlite3Malloc
0x7826513f      [libchrome.2214.109.so -sqlite3.c:18345 ]       sqlite3DbMallocRaw
0x78277773      [libchrome.2214.109.so -sqlite3.c:56058 ]       sqlite3VdbeMemGrow
0x782798f5      [libchrome.2214.109.so -sqlite3.c:64836 ]       sqlite3VdbeExec
0x78277c19      [libchrome.2214.109.so -sqlite3.c:60748 ]       sqlite3_step
0x7827e3eb      [libchrome.2214.109.so -statement.cc:61 ]       sql::Statement::Run
0x78196339      [libchrome.2214.109.so -sqlite_persistent_cookie_store.cc:1042 ]        content::SQLitePersistentCookieStore::Backend::Commit
0x781936c9      [libchrome.2214.109.so -callback.h:401 ]        base::SequencedWorkerPool::Inner::ThreadLoop
0x781930f5      [libchrome.2214.109.so -sequenced_worker_pool.cc:507 ]  base::SequencedWorkerPool::Worker::Run
0x78192f55      [libchrome.2214.109.so -simple_thread.cc:60 ]   base::SimpleThread::ThreadMain
0x7818674f      [libchrome.2214.109.so -platform_thread_posix.cc:80 ]   base::::ThreadFunc
0x4012b27a      [libc.so + 0x0000d27a ] 
0x4012b412      [libc.so + 0x0000d412 ] 
0x64b07dd7      [dalvik-mark-stack (deleted) + 0x0222bdd7 ]

我将假设存在 内存泄漏。我该如何解决这个问题或追查其根源?

请注意,我没有使用 sqlite 命令对 sqlite 进行任何显式调用。但是,我确实充分使用了 html5 localStorage,并且我有外部 JS 库,这些库使用 cookie 来使用存储。

【问题讨论】:

  • 如果浏览器本身在运行 Web 应用程序时崩溃,那么这肯定是供应商有兴趣了解的错误。特别是如果它影响多个浏览器。我会专注于可靠地重现错误并在提交报告之前将其隔离;无论您的应用程序是否出错,崩溃都不是您的错。

标签: javascript android angularjs google-chrome memory-leaks


【解决方案1】:

堆栈跟踪向您显示代码在执行应用程序期间所遵循的路径。它可以帮助您查找是否发生了错误。

看起来该错误与堆栈跟踪中的 sqlite3 有关。 stak 跟踪中的每一行都是代码中的一个函数:

sqlite3MemRoundup
sqlite3MemMalloc
mallocWithAlarm
sqlite3Malloc
sqlite3DbMallocRaw
sqlite3VdbeMemGrow
sqlite3VdbeExec
sqlite3_step

您应该调查应用程序中使用sqlite 的部分。

我不认为这是 JavaScript 内存泄漏,但您可以使用 Chrome 内存分析器来研究内存使用情况并找到泄漏https://developer.chrome.com/devtools/docs/javascript-memory-profiling

【讨论】:

  • 看起来与cookie有关,chrome在使用cookie时在内部使用sqlite。所以我也会研究你是否想保存 cookie content::SQLitePersistentCookieStore::Backend::Commit
  • 我没有对 sqlite3 命令进行任何显式调用,我有一些使用 cookie 的外部 3rd 库。这对我来说是一个很好的起点,如果它解决了我的问题,我会接受这个答案。
猜你喜欢
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2011-09-13
  • 2019-06-30
相关资源
最近更新 更多