Android NDK底層BUG,記錄:connect、socket(AF_INET, SOCK_STREAM, 0) 等系統套接字接口函數崩潰問題。

在 Android NDK 之中,看上去調用 connect、socket 函數是不會崩潰的,但這是否定的,它在特定的情況下存在必定的崩潰的問題。

但是這種情況放到MACOS、LINUX、WINDOWS都不會崩潰,而它崩潰的點出現在操作系統底層。

人們需要參考這兩個系統底層 C/C++ 文件實現及關聯源文件實現:

https://android.googlesource.com/platform/frameworks/base.git/+/android-4.2.2_r1/core/jni/AndroidRuntime.cpp

https://android.googlesource.com/platform/system/netd/+/master/client/FwmarkClient.cpp

崩潰(例程):

調用 socket 函數導致 SIGSEGV 段錯誤崩潰。

直接說重點:

Google 實現的NDK標準庫是經過特殊定制,這種問題出現在,“stackful” 協同程序之中調用它們,但是它們崩潰有幾個基本要素。

1、對于 socket 創建一個UDP/TCP文件描述符,在有棧協程之中100%崩潰。

2、對于 socket 創建的TCP文件描述符,在有棧協程之中 send、recv、recvmsg、sendmsg 函數不會崩潰。?

同理UDP的套接字,在創建時會崩潰,但調用 sendto、recvform 不會崩潰,但它并不僅僅只是在有棧協程之中會崩潰。

準確的說是,只要當前 “線程棧” 無法回溯?Fwmark 都會導致崩潰,在NDK之中創建的線程都是在 LINUX 基礎上,從 Fwmark 之中執行后在驅動調用,只是這類常見于應用在協程。

解決辦法,在可以回溯 Fwmark 的線程上面執行,socket、connect 函數,在驅動該自定義線程棧上面。

通常在 C/C++ 之中,那些線程可以確定為?Fwmark 驅動可回溯線程?

1、main 線程(若為進程)

2、std::thread 線程(NDK在標準庫之中魔改過)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718514.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

香橙派企業信用問題-勸一個是一個,別買!!!

1. 背景 香橙派推廣旗下AI PRO 開發板,在B站做直播,一場直播兩個直播間,分別抽取一名觀眾,宣傳是場場送AI PRO開發板!!! 2. 收到獎品與宣傳不符合 3.咨詢群主:態度很傲慢&#xff0c…

MES的生產計劃管理與ERP的生產計劃管理到底有什么不同?

在制造業信息化的道路上,ERP系統和MES系統是兩個非常重要的信息化管理工具。大多數制造業企業往往首先考慮上ERP系統,經過一段時間的深度使用后,再引進MES系統進行報工或數采。但我們可以發現,這兩個系統都能進行生產管理&#xf…

數學建模團隊分工建議

文章目錄 引言數學建模概述數學建模團隊的組成與角色定位一、團隊組成與角色定位1.1 團隊成員1.2 角色定位 二、團隊協作方式 分工方案分工原則分工策略 按照任務流程分工數據收集與處理分工模型建立與優化分工結果分析與報告撰寫分工用代碼來表示這個過程 總結模塊目錄模塊一&…

詳細了解網絡通信流程、協議組成、編碼方式、數據傳輸方式和途徑、Http 協議的編碼、cookie的使用和提取路徑

詳細了解網絡通信流程、協議組成、編碼方式、數據傳輸方式和途徑、Http 協議的編碼、cookie的使用和提取路徑。 一、網絡通信簡介 現代的網絡傳輸介質以以太網鏈路居多,完整的網絡數據報結構大致如下。傳輸層及其以下的機制由操作系統內核提供,應用層由用戶進程提供,應用程…

上位機圖像處理和嵌入式模塊部署(qmacvisual學習1)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing 163.com】 雖然我們前面學習了很多的知識點,比如說在windows這邊,用qt寫界面,用opencv寫圖像處理代碼;在linux…

二維碼門樓牌管理系統技術服務:構建智慧城市的基石

文章目錄 前言一、標準地址設置規則二、門樓牌作為標準地址的法定載體三、二維碼門樓牌管理系統技術服務的優勢與應用前景 前言 在智慧城市建設的浪潮中,二維碼門樓牌管理系統技術服務以其高效、便捷的特性,逐漸成為城市管理的重要工具。本文將深入探討…

一張草圖直接生成視頻游戲,谷歌推出生成交互大模型

谷歌DeepMind的研究人員推出了,首個無需數據標記、無監督訓練的生成交互模型——Generative Interactive Environments,簡稱“Genie”。 Genie有110億參數,可以根據圖像、真實照片甚至草圖,就能生成各種可控制動作的視頻游戲。Ge…

項目可行性方案:人臉識別實現無感考勤的項目技術可行性方案

目 錄 1.引言 1.1編寫目的 1.2背景 2.可行性研究的前提 2.1要求 2.2目標 3.對現有系統的分析 3.1系統改進示意圖 3.2改進之處 3.3技術條件方面的可行性 4.結論 1.引言 1.1編寫目的 本報告編寫的目的是探究學校里對教室和辦公室內教師的人臉進行識別從而…

Linux --- 應用層 | HTTP | HTTPS

前言 前面寫的TCP/UDP客戶端在訪問服務端的時候,需要輸入ip地址和端口號才可以訪問, 但在現實中,我們訪問一個網站是直接輸入的一個域名,而不是使用的ip地址端口號。 比如在訪問百度 https://www.baidu.com/的時候, …

RocketMQ - 深入研究一下消費者是如何獲取消息處理以及進行ACK

1. 消費者組到底是個什么概念 消費者組的意思就是讓你給一組消費者起一個名字,比如有一個Topic叫“TopicOrderPaySuccess”,然后假設有庫存系統、積分系統、營銷系統、倉儲系統他們都要去消費這個Topic中的數據。 此時我們應該給這四個系統分別起一個消費組的名字,比如sto…

Linux:管道文件及相關API

目錄 前言一、管道文件1、基本概念2、匿名(無名)管道3、命名(有名)管道4、管道的特點5、思考:何時只能使用無名管道,何時又只能用有名管道?無名管道(匿名管道)適用的情況:有名管道(命名管道&…

2024最新AI系統ChatGPT網站源碼, AI繪畫系統

一、前言說明 R5Ai創作系統是基于ChatGPT進行開發的Ai智能問答系統和Midjourney繪畫系統,支持OpenAI-GPT全模型國內AI全模型。本期針對源碼系統整體測試下來非常完美,那么如何搭建部署AI創作ChatGPT?小編這里寫一個詳細圖文教程吧。已支持GP…

CVE-2024-23334 AIOHTTP 目錄遍歷漏洞分析

漏洞描述: aiohttp 是一個用于 asyncio 和 Python 的異步 HTTP 客戶端/服務器框架。使用aiohttp作為Web服務器并配置靜態路由時,需要指定靜態文件的根路徑。此外,選項“follow_symlinks”可用于確定是否遵循靜態根目錄之外的符號鏈接。當“f…

css樣式元素的相對定位,絕對定位,固定定位等元素定位運用技巧詳解

文章目錄 1.相對定位 relative2.絕對定位 absolute3.固定定位4.display 轉換元素5.float浮動6.float產生內容塌陷問題7.overflow CSS樣式學習寶典,關注點贊加收藏,防止迷路哦 在CSS中關于定位的內容是:position:relative | absolute | static…

Unreal觸屏和鼠標控制旋轉沖突問題

Unreal觸屏和鼠標控制旋轉沖突問題 鼠標控制攝像機旋轉添加Input軸計算旋轉角度通過軸事件控制旋轉 問題和原因問題原因 解決辦法增加觸摸控制旋轉代碼觸屏操作下屏蔽鼠標軸響應事件 鼠標控制攝像機旋轉 通過Mouse X和Mouse Y控制攝像機旋轉。 添加Input軸 計算旋轉角度 通過…

SpringBootWeb快速入門

1.創建springboot工程,新建module 2.勾選web開發相關依賴 3.刪除多余文件 4.新建類 5.啟動類中運行main方法 6.啟動 默認端口號8080 7.打開瀏覽器,地址欄輸入 8.報錯 9.原因,控制層位置放錯,剪切controller層放進com.example …

[vue error] TypeError: Components is not a function

問題詳情 問題描述: element plus按需導入后,啟動項目報錯: 問題原因 unplugin-vue-components插件版本問題 查看 unplugin-vue-components插件可以發現版本太高了 問題解決 unplugin-vue-components 版本高了,我用的0.26.0&#xff0c…

AI寫的wordpress網站首頁模板 你覺得怎么樣?

以下是一個AI寫的基本的首頁模板示例&#xff0c;包含您提到的各個模塊。請注意&#xff0c;這只是一個基本框架&#xff0c;您可能需要根據您的具體需求進行進一步的定制和調整。 <!DOCTYPE html> <html <?php language_attributes(); ?>> <head>&…

【STM32+HAL】姿態傳感器陀螺儀MPU6050模塊

一、準備工作 有關OLED屏初始化的問題&#xff0c;詳見【STM32HAL】OLED顯示初始化配置 二、所用工具 1、芯片&#xff1a;STM32F10C8T6 2、CUBEMX配置軟件 3、 6 軸運動處理組件MPU6050 三、實現功能 OLED屏顯示姿態角 四、HAL配置步驟 1、開啟I2C1進行MPU6050通信 2、開…

供應鏈管理(SCM):界面設計全面掃盲,得供應鏈者得天下

大家伙&#xff0c;我是大千UI工場&#xff0c;專注UI分享和項目接單&#xff0c;本期帶來供應鏈系統的設計分享&#xff0c;歡迎大家關注、互動交流。 一、什么是SCM SCM系統是供應鏈管理&#xff08;Supply Chain Management&#xff09;系統的縮寫。供應鏈管理是指協調和管…