踩内存
文章平均质量分 88
sunshineywz
这个作者很懒,什么都没留下…
展开
-
High-level design overview
High-level design overview {#gapi_hld}文章目录High-level design overview {#gapi_hld}G-API High-level design overviewAPI layer {#gapi_api_layer}Graph compiler layer {#gapi_compiler}Backends layer {#gapi_backends}Graph execution {#gapi_compiled}G-API High-leve原创 2022-01-17 23:40:06 · 400 阅读 · 0 评论 -
gapi_purposes
Why Graph API? {#gapi_purposes}Motivation behind G-API {#gapi_intro_why}G-API module brings graph-based model of execution to OpenCV. Thischapter briefly describes how this new model can help softwaredevelopers in two aspects: optimizing and porting im原创 2022-01-17 23:27:57 · 2221 阅读 · 0 评论 -
Graph API
Graph API {#gapi}Introduction {#gapi_root_intro}OpenCV Graph API (or G-API) is a new OpenCV module targeted to makeregular image processing fast and portable. These two goals areachieved by introducing a new graph-based model of execution.G-API is a s原创 2022-01-17 23:22:54 · 3007 阅读 · 0 评论 -
应用 AddressSanitizer 发现程序内存错误
作为C/ C++工程师,在开发过程中会遇到各类问题,最常见便是内存使用问题,比如,越界,泄漏。过去常用的工具是 Valgrind,但使用 Valgrind 最大问题是它会极大地降低程序运行的速度,初步估计会降低 10 倍运行速度。而 Google 开发的 AddressSanitizer 这个工具很好地解决了 Valgrind 带来性能损失问题,它非常快,只拖慢程序 2 倍速度。AddressSanitizer 概述AddressSanitizer 是一个基于编译器的测试工具,可在运行时检测 C/C+原创 2020-06-14 14:30:20 · 1405 阅读 · 2 评论 -
ASAN做系統分析協助除錯
1 IntroductionAddressSanitizer 是 Google 用于检测内存各种 buffer overflow(Heap buffer overflow,Stack buffer overflow, Global buffer overflow)的一个非常有用的工具。ASAN(Address-Sanitizier)早先加入 GCC 4.8,從 gcc 4.8 開始,AddressSanitizer成為 gcc 的一部分。當然,要獲得更好的體驗,最好使用 4.9 及以上版本,因為 g原创 2020-06-13 10:33:57 · 327 阅读 · 0 评论 -
mprotect
#include <fcntl.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <sys/mman.h>#include <sys/stat.h>#include <sys/types.h>#include <unistd.h> static int alloc_size;static char *memor原创 2020-06-09 14:13:16 · 213 阅读 · 0 评论 -
Cache一致性导致的踩内存问题
本文主要分享一个Cache一致性踩内存问题的定位过程,涉及到的知识点包括:backtrace、内存分析、efence、wrap系统函数、硬件watchpoint、DMA、Cache一致性等。1 背景设备上跑的是嵌入式实时操作系统(RTOS,具体为商业闭源的ThreadX),非Linux平台,导致一些常见的问题排查方法无法使用。问题描述: 重启压力测试时,发现设备启动过程中偶尔会死机,概率较低。稍微修改程序后,问题可能就不再出现了,所以版本回退、代码屏蔽等方法不太适用。2 基于backtrace分析原创 2020-06-09 14:12:47 · 1798 阅读 · 3 评论 -
mmb、mmb_info和mmb_userdev_info关系.png
原创 2019-07-06 10:30:26 · 204 阅读 · 0 评论 -
mmz链表
原创 2019-07-06 11:00:28 · 215 阅读 · 0 评论 -
hisi mmz模块驱动讲解
原创 2019-07-07 18:14:09 · 586 阅读 · 0 评论 -
Linux虚拟地址空间布局以及进程栈和线程栈总结
一:Linux虚拟地址空间布局在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Address-Aware Executables标志也可为1:3)。这并不意味着内核使用那么多物理内存,仅表示它可支配这部分地址空间,根据需要将其映射到物理内存。虚拟地址通过页表(Pa原创 2020-05-20 22:09:06 · 891 阅读 · 0 评论 -
程序异常分析指南
在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异常的情况。程序崩溃时最常见的就是程序运行终止,报告Segmentation fault (core dumped)错误。而程序卡死一般来源于代码逻辑的缺陷,导致了死循环、死锁等问题。总的来看,常见的程序异常问题一般可以分为非法内存访问和资源访问冲突两大类。1.非法内存访问(读/写):非法指针、多线程共享数据访问冲突、内存访问越界、缓冲区溢出等。2.资源访问冲突:栈内存溢出、堆内存溢出、死锁等。一、非法内存访问非法内存访问是最常见的程序异原创 2020-05-20 22:08:29 · 736 阅读 · 0 评论 -
pthread之线程堆栈
//先来讲说线程内存相关的东西,主要有下面几条://进程中的所有的线程共享相同的地址空间。//任何声明为static/extern的变量或者堆变量可以被进程内所有的线程读写。//一个线程真正拥有的唯一私有储存是处理器寄存器。//线程栈可以通过暴露栈地址的方式与其它线程进行共享。// 有大数据量处理的应用中,有时我们有必要在栈空间分配一个大的内存块或者要分配很多小的内存块,但是线程的栈空间的最大值在线程创建的时候就已经定下来了,如果栈的大小超过个了个值,系统将访问未授权的内存块,毫无疑问,再原创 2020-05-20 22:07:31 · 342 阅读 · 0 评论 -
踩内存问题定位总结
大致原因:数组越界,字符串操作越界,栈指针操作越界,操作了释放掉了的指针,多线程时序对资源保护控制不当,内存管理异常,使用了其他地方的内存定位方法:1. 类似内存泄漏的问题,先定界,后定位,通过内存proc信息(meminfo/media-mem)判断是具体的模块,内存段2. 减法缩小范围,裁剪模块,修改应用程序,找到最小场景2. 加打印,打印出异常和怀疑的地址3. gdb+watch ...原创 2020-04-20 09:01:21 · 1405 阅读 · 0 评论 -
通过系统调用,内核断点方法定位用户进程被内核踩内存的问题
1、系统调用拦截系统调用拦截的目的其实就是把系统真正要执行的系统调用替换为我们自己写的内核函数,这里有一篇博客,对此作了介绍,https://blog.csdn.net/zhangyifei216/article/details/49872861系统调用拦截的两个问题,一个是找到sys_call_table地址,一个是修改内存页的属性,让其变为可写。1)找sys_call_table地址我...原创 2020-04-20 09:00:07 · 531 阅读 · 0 评论 -
cat memwatch.log
yuanweizhong@Cpl-AVI-General-74-178: ~/nfs/mw271/memwatch-2.71$cat memwatch.log============= MEMWATCH 2.71 Copyright © 1992-1999 Johan Lindh =============Started at Sun Apr 19 10:40:53 2020Modes: S...原创 2020-04-20 08:40:59 · 217 阅读 · 0 评论