Fatal Signal 31 error when upgrading android app from API 24 to 26

转载自 Stack Overflow ( upgrade - Fatal Signal 31 error when upgrading android app from API 24 to 26 - Stack Overflow )

 

Android 8 O (SDK 26) limits which system calls are allowed for security reasons by enabling a feature called secure computing in the Linux kernel.

This means only whitelisted calls can be executed and that any other call will result in signal 31 (SIGSYS), code 1 (SYS_SECCOMP), like you are experiencing.

You will need to examine the stack trace of this signal to find out which system call was not allowed (which was not listed completely in your question).

 

You can find a list of allowed calls here ( libc/SYSCALLS.TXT - platform/bionic.git - Git at Google (googlesource.com) ). Any other call is not allowed.

You can find what Google wrote about this here. ( Android Developers Blog: Seccomp filter in Android O (googleblog.com) )

posted @ 2021-11-01 17:12 HandsomeDragon 阅读(1105) 评论(0) 推荐(0) 编辑
摘要: 0.引言本人从进公司以来一直负责公司Android平台下产品的NDK开发,用的工具:01. Google的adt-bundle(集成了eclipse和sdk)02. NDK03. Cygwin(PS: 虽然比较新的ndk版本,好像是从 r7开始就已经可以不用Cygwin了, 但是本人从刚开始接触Android NDK开发时就用的是Cygwin,在Window操作系统下足够用了, 作为懒人,既不想折腾到Linux下,又对命令行的操作比较留恋,所以就这么一直用着。高手请勿见怪。)1. 穷今天在做一个小测试的程序的时候,使用 javah 命令,想看一下有关 javah 的详细帮助说明,突... 阅读全文
posted @ 2014-03-28 17:06 HandsomeDragon 阅读(7064) 评论(3) 推荐(1) 编辑
摘要: 一、LogCat 存储在一个叫做 circular memory buffers 的缓冲中。 平时常用的都是通过eclipse 自带的 logcat 插件查看 logcat ,其实也可以通过命令来导出 logcat ,以方便在某些特定的情况查看 logcat ,如下是个简单的用法命令:adb logcat -d > logcat.txt---------------------- 你看见或看不见,我都是个分割线 -------------------------二、参照网上查找的资料和自己前些时间的开发工作实践,(初步的探索,难免有浅陋之处,欢迎高手不吝赐教。)总结了一些logcat 高 阅读全文
posted @ 2014-02-12 11:27 HandsomeDragon 阅读(1653) 评论(0) 推荐(2) 编辑
摘要: 作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法。可是导入android源码后,基本都有错误,R.java也不会自动生成,因为是第一次导入工程,工程有错R.java就不会自动生成了,工程有错误,当然模拟器就不能启动,也就看不到效果。在网上找到的各种解决方法,总结如下:1、选择菜单 Project >> Clean ,前提是勾选上 Bulid Automatically(自动构建部署) , 点Clean后会重新构建项目。 因为一般情况下,R.java文件在这个时候会重新更新生成一边,如果工程有错,就不 阅读全文
posted @ 2013-09-02 14:08 HandsomeDragon 阅读(2608) 评论(0) 推荐(0) 编辑
摘要: (一)Linux 删除当前目录及子目录中所有某种类型的文件方法1 : 此方法不能处理目录中带空格的那些。rm -rf `find . -name "*.example"`Linux的文件名(目录也是一种文件)不建议带空格,命令行中不好处理这个空格。方法2:组合使用 find 及 xargs find test2/ -name '*.example' |xargs rm -rf(xargs是给命令传递参数的一个过滤器,可以将前一个命令产生的输出作为后一个命令的参数。)即将 find 产生的输出(test2 目录下的所有 example 类型文件),作为 rm 阅读全文
posted @ 2013-08-23 16:53 HandsomeDragon 阅读(5102) 评论(1) 推荐(0) 编辑
摘要: [0. 必须定义为类成员的操作符]赋值 =;下标 [];调用 ();成员访问箭头 ->;[1. 输入和输出操作符]支持 I/O 操作的类所提供的 I/O 操作接口,一般应该与标准库 iostream 为内置类型定义的接口相同,因此,许多类都需要重载输入和输出操作符。为了与 IO 标准库一致,操作符应接受 ostream& 作为第一个形参,对类类型 const 对象的引用作为第二个形参,并返回对 ostream 形参的引用。重载输出操作符一般的简单定义如下:// general skeleton of the overloaded output operatorostream&am 阅读全文
posted @ 2013-08-14 11:30 HandsomeDragon 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 复制控制是定义任意 C++ 类必不可少的部分。当定义一个新类型的时候,需要显式或隐式地指定复制、赋值和撤销该类型的对象时会发生什么。以上这些是通过定义复制构造函数、赋值操作符和析构函数来达到的。如果没有显式定义复制构造函数或赋值操作符,编译器(通常)会为我们定义。复制构造函数,具有单个形参,该形参(常用 const 修饰)是对该类类型的引用。1) 当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用复制构造函数。2) 当将该类型的对象传递给函数或函数返回该类型的对象时,将隐式使用复制构造函数。析构函数:当对象超出作用域或动态分配的对象被删除时,将自动应用析构函数。1) 析构函数可用 阅读全文
posted @ 2013-08-14 11:10 HandsomeDragon 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 设计具有指针成员的类时,类设计者必须首先需要决定的是该指针应提供什么行为。将一个指针复制到另一个指针时,两个指针指向同一对象。当两个指针指向同一对象时,可能使用任一指针改变基础对象。类似地,很可能一个指针删除了一对象时,另一指针的用户还认为基础对象仍然存在。指针成员默认具有与指针对象同样的行为。然而,通过不同的复制控制策略,可以为指针成员实现不同的行为。大多数 C++ 类采用以下三种方法之一管理指针成员:1. 指针成员采取常规指针型行为。这样的类具有指针的所有缺陷但无需特殊的复制控制。2. 类可以实现所谓的“智能指针”行为。指针所指向的对象是共享的,但类能够防止悬垂指针。3. 类采取值型行为。 阅读全文
posted @ 2013-07-31 14:19 HandsomeDragon 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 0. 复制构造函数只有单个形参,而且该形参是对本类类型对象的引用(常用 const 修饰),这样的构造函数称为复制构造函数。与默认构造函数一样,复制构造函数可由编译器隐式调用。复制构造函数可用于: 根据另一个同类型的对象显式或隐式初始化一个对象。 复制一个对象,将它作为实参传给一个函数。 从函数返回时复制一个对象。 初始化顺序容器中的元素。 根据元素初始化式列表初始化数组元素。对象的定义形式回忆一下,C++ 支持两种初始化形式:直接初始化和复制初始化。复制初始化使用 = 符号,而直接初始化将初始化式放在圆括号中。当用于类类型对象时,初始化的复制形式和直接形式有所不同:直接初始化直接调... 阅读全文
posted @ 2013-07-18 14:50 HandsomeDragon 阅读(826) 评论(0) 推荐(0) 编辑
摘要: 0. 使用背景对于特定类类型的全体对象而言,访问一个全局对象有时是必要的。也许,在程序的任意点需要统计已创建的特定类类型对象的数量;或者,全局对象可能是指向类的错误处理例程的一个指针;或者,它是指向类类型对象的内在自由存储区的一个指针。然而,全局对象会破坏封装:对象需要支持特定类抽象的实现。如果对象是全局的,一般的用户代码就可以修改这个值。1. static 类成员类可以定义类 静态成员,而不是定义一个可普遍访问的全局对象。通常,非 static 数据成员存在于类类型的每个对象中。不像普通的数据成员,static 数据成员独立于该类的任意对象而存在;每个 static 数据成员是与类关联的对象 阅读全文
posted @ 2013-07-17 16:10 HandsomeDragon 阅读(669) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示