Android13 编译ninja failed with: exit status 137

描述

现象很奇怪,主机是ubuntu 18.04, 内存有32G,并且系统中有两份Android13代码, 有一份编译正常,另外一份编译不正常,一度以为是因为下载源码不齐全导致,后面仔细看日志,原来是内存不够,导致OOM-killer杀死了。

现象

分析:

当前界面没有太多可以参考的出错信息,看日志:  out/soong.log,里面没有类似指明哪个代码出错的信息

2024/02/21 19:44:35.273170 build/soong/ui/build/exec.go:74: "dumpvars" finished with exit code 0 (932ms real, 795ms user, 89ms system, 343MB maxrss)


2024/02/21 19:47:22.609247 build/soong/ui/build/exec.go:74: "soong bootstrap" finished with exit code 0 (2m27.983s real, 5m26.38s user, 25.136s system, 22311MB maxrss)
 

2024/02/21 19:48:40.257101 build/soong/ui/build/exec.go:74: "ckati" finished with exit code 0 (40ms real, 5ms user, 2ms system, 362MB maxrss)
 

2024/02/21 19:48:40.281063 build/soong/ui/build/exec.go:64: "ninja" executing "prebuilts/build-tools/linux-x86/bin/nsjail" [-x prebuilts/build-tools/linux-x86/bin/ninja -H android-build --cwd /mnt/4T_disk/jihaoqi/cuttlefish/srd-a13-r74/toptree13 -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -R / -B /tmp -B /mnt/4T_disk/jihaoqi/cuttlefish/srd-a13-r74/toptree13 -B /mnt/4T_disk/jihaoqi/cuttlefish/srd-a13-r74/toptree13/out --disable_clone_newcgroup -q -- -d keepdepfile -d keeprsp -d stats --frontend_file out/.ninja_fifo droid -j 16 -f out/combined-aosp_cf_x86_64_phone.ninja -o usesphonyoutputs=yes -w dupbuild=err -w missingdepfile=err]
2024/02/21 19:54:04.317254 build/soong/ui/build/exec.go:74: "ninja" finished with exit code 137 (5m24.036s real, 1m58.562s user, 12.006s system, 17723MB maxrss)
2024/02/21 19:54:04.360249 build/soong/ui/build/exec.go:127: ninja failed with: exit status 137
2024/02/21 19:54:04.493015 build/soong/ui/status/critical_path.go:111: critical path took 2m22s
2024/02/21 19:54:04.493026 build/soong/ui/status/critical_path.go:114: elapsed time 8m44s
2024/02/21 19:54:04.493048 build/soong/ui/status/critical_path.go:116: perfect parallelism ratio 27%
2024/02/21 19:54:04.493052 build/soong/ui/status/critical_path.go:120: critical path:
2024/02/21 19:54:04.493057 build/soong/ui/status/critical_path.go:125:     0:14 regenerate globs shard 117 of 1024
2024/02/21 19:54:04.493060 build/soong/ui/status/critical_path.go:125:     2:08 analyzing Android.bp files and generating ninja file at out/soong/build.

发现执行ninja的时候出错,也就是编译的时候出错,前面执行,"dumpvars","ckati"退出码都是0,说明正常,ninja发现退出码是错误码137,通过查询:

Ninja 中的退出状态 137 通常表示构建过程由于内存问题而终止。错误代码 137 通常与 Linux OOM(内存不足)相关,会在系统内存不足时杀死进程。

为了解决这个问题,您可以尝试以下解决方案:

  1. 增加可用内存:如果可能,请为系统分配更多内存或增加执行 Ninja 的进程的内存限制。

  2. 优化资源使用:检查任何不必要的后台进程或消耗过多内存的应用程序并终止它们。关闭所有不必要的浏览器选项卡或同时运行的应用程序。

  3. 修改构建设置:如果您可以控制构建配置,请考虑使用该标志调整 Ninja 中并发作业的数量来减少并行性-j。例如,ninja -j4将其限制为一次只能执行四个作业。

  4. 拆分为较小的构建:如果您的项目很大,请将其拆分为较小的组件并单独构建它们,以减少编译期间的内存使用量。

  5. 升级硬件:如果上述选项均不起作用,并且您经常遇到内存不足问题,则可能需要升级硬件(例如,添加更多 RAM)。

看系统日志/var/log/syslog,也充分说明了这个问题

解决方法

增加swap分区空间;

# 将现有swap移动到主内存,可能需要几分钟
sudo swapoff -a# 创建新的swap文件,bs×count=最后生成的swap大小,这里设置8G
sudo dd if=/dev/zero of=/swapfile bs=1G count=8# 设置权限
sudo chmod 0600 /swapfile# 设置swap
sudo mkswap /swapfile# 打开swap
sudo swapon /swapfile# 检查设置是否有效
grep Swap /proc/meminfo # 或者htop看一下# 设置永久有效
sudo gedit /etc/fstab
# 在末尾行加上 
# /swapfile swap swap sw 0 0

以上解决方法参考: 链接:https://juejin.cn/post/7158741169001168927

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/261424.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解指针(c语言)

目录 一、使用指针访问数组二、数组名的理解1、数组首元素的地址2、整个数组 三、一维数组传参的本质四、冒泡排序五、二级指针六、指针数组 一、使用指针访问数组 可以使用指针来访问数组元素。例如,可以声明一个指针变量并将其指向数组的第一个元素,然…

c语言经典测试题2

1.题1 我们来思考一下它的结果是什么? 我们来分析一下:\\是转义为字符\,\123表示的是一个八进制,算一个字符,\t算一个字符,加上\0,应该有13个,但是strlen只计算\0前的字符个数。所以…

Vue3引用第三方模块报错Could not find a declaration file for module ***.

在引用第三方的组件时候报错如下 原因是:该组件可能不是.ts文件而是.js文件 解决方案: 1.在Src的目录下面新建一个文件为shims-vue.d.ts的文件 2.文件内容为 declare module xxx,xxx就是你报错的模块 例如我这样 declare module vue3-pu…

Gitlab 设置页面语言为简体中文

1.用户登录,点击头像,再点击Preferences(偏好设置) 2.向下滑动,找到 Localization(本地化),进行修改,并保存 3.刷新页面,就更改成简体中文了

药厂常用实验室耗材PFA药勺耐腐蚀透明长柄取样勺

实验室取用药品或少量样品时,常用到药匙,PFA药匙分固体药匙和液体药匙两种,别名也叫量勺、药勺、搅拌勺、样品勺、取样勺等。 PFA取样勺,常用于高要求实验条件下取用少量粉末微量颗粒等。可根据您的需要定制各种尺寸、规格的四氟…

【深度学习笔记】回归与分类

回归与分类 1 Logistic 回归 定义 目标:给定数据点 X ( n ) ∈ R m X^{(n)}∈R^m X(n)∈Rm 和相应标签 t ( n ) ∈ Ω t^{(n)}∈Ω t(n)∈Ω ,找到一个映射 f : R m → Ω f:R^m→Ω f:Rm→Ω 回归的目的是预测一个连续的数值变量,如果Ω…

jenkins的nmp install命令无法下载包

问题:在jenkin的流水线脚本中执行到:npm install命令后无法下载前端依赖包 1、进到jenkins的工作目录,一般在底层为/var/lib/jenkins/workspace/任务名称 cd /var/lib/jenkins/workspace/xkc处理方式: # 查看镜像源 npm config …

Redis篇----第十二篇

系列文章目录 文章目录 系列文章目录前言一、一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set 他们最多能存放多少元素二、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?三、Redis 最适合的场景?前言 前些天发现了一…

游戏配置二级缓存一致性问题解决方案

游戏服务器进程在启动的时候,一般会把所有策划配置数据加载到内存里,将主键以及对应的记录存放在一个HashMap容器里,这称为一级缓存。部分功能可能还需要缓存其他数据,这些称为二级缓存。举个例子,对于如下的玩家升级表…

如何删除PS最近使用项

ps删除最近文件列表 点击菜单栏中文件->最近打开文件->清除最近的文件列表

【OpenSSH+Jenkins搭建项目自动化部署】

OpenSSHJenkins搭建项目自动化部署 一、Windows安装OpenSSH1.下载2.解压3.安装4.启停服务5.SSH免密登录 二、Jenkins安装1.下载2.安装启动3.登录 三、项目自动化部署1.SSH配置2.项目配置3.权限控制 一、Windows安装OpenSSH 1.下载 https://github.com/PowerShell/Win32-0penS…

如何修改docker容器的端口映射

要修改 Docker 容器的端口映射&#xff0c;你需要停止并删除现有的容器&#xff0c;然后使用新的端口映射重新运行容器。以下是详细步骤&#xff1a; 停止容器&#xff1a; 使用 docker stop 命令停止正在运行的容器。替换 <container_id> 为你要停止的容器的 ID 或者容器…

SVN忽略已提交的文件(ignore,移出版本控制)

本文适用于已安装TortoiseSVN客户端的同学。 1、右键点击要忽略的文件夹或文件&#xff0c;鼠标移到“TortoiseSVN”&#xff0c;找到“Unversion and add to ignore list”&#xff0c;选择文件夹&#xff0c;弹出提示框确认忽略。 2、设置完忽略文件后&#xff0c;还需要做…

微信小程序uniapp校园在线报修系统维修系统java+python+nodejs+php

管理员的主要功能有&#xff1a; 1.管理员输入账户登陆后台 2.个人中心&#xff1a;管理员修改密码和账户信息 3.用户管理&#xff1a;对注册的用户信息进行删除&#xff0c;查询&#xff0c;添加&#xff0c;修改 4.维修工管理&#xff1a;对维修工信息进行添加&#xff0c;修…

合金电阻器与新兴技术的融合:引领电子行业的下一波浪潮?

随着电子行业以前所未有的速度向创新迈进&#xff0c;合金电阻器与尖端技术的集成证明了电子元件的动态特性。本文探讨了合金电阻器与新兴技术的融合&#xff0c;开创了功能化、小型化和效率化的新时代。 1. 与IoT&#xff08;物联网&#xff09;集成&#xff1a; 合金电阻器在…

Spring IoC容器详解

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 基本概念 Spring IoC容器是Spring框架的核心组件&#xff0c;它实现了控制反转&#xff08;Inversion of Control&#xff0c;IoC&#xff09;的设计原则。IoC是一种编程思…

IDEA2023.3.4开启SpringBoot项目的热部署【简单明了4步操作】

添加devtools依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional> </dependency>IDEA开启自动编译 …

Vue路由缓存问题

路由缓存问题的产生 VueRouter允许用户在页面中创建多个视图&#xff08;多级路由&#xff09;&#xff0c;并根据路由参数来动态的切换视图。使用带参数的路由时&#xff0c;相同的组件实例将被重复使用。因为两个路由都渲染同一个组件&#xff0c;比起销毁再创建&#xff0c;…

QFileDialog文件选择对话框

QFileDialog 类是 Qt 框架中用于处理文件对话框的一个类&#xff0c;它继承自 QDialog。QFileDialog 提供了标准的文件选择对话框&#xff0c;使用户能够选择文件或目录。这个类可以用于打开或保存文件&#xff0c;也可以用来选择目录。 主要功能 打开和保存文件&#xff1a;…

单体微服务K8S笔记

单体微服务K8S笔记 https://blog.csdn.net/m0_48341969/article/details/126063832思路参考以上博客 //测试 https://gitee.com/yangbuyi/yi项目组织参考以上git 单体&#xff1a; 不特地介绍 微服务&#xff1a; rpc:远程过程调用 拆分&#xff0c;分别部署&#xff0…