免费注册 查看新帖 |

ChinaUnix.net

  天发娱乐城 天发国际娱乐城 天发88娱乐城 文库
最近访问板块 发新帖
查看: 3502 | 回复: 2
打印 上一主题 下一主题

[应用] 交叉编译mips天发娱乐城上的valgrind运行出现“impossible”问题 [复制链接]

天发国际娱乐城徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-23 11:15 |只看该作者 |倒序浏览
嵌入式天发娱乐城,跑的linux系统;一个死机问题查了一个月了,跑着跑着就挂了,没有coredump, 没有异常打印;没有任何头绪;
想跑valgrind排查一下原因,好不容易编译成功,运行时却出现如下问题,有人遇到过吗?

/home/xxx/workspace/valgrind/bin/bin # ./mips-linux-gnu-valgrind /home/xxx
/workspace/dvbc_k1.elf1
==342== Memcheck, a memory error detector
==342== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==342== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
==342== Command: /home/wupeng/workspace/dvbc_k1.elf1
==342==
--342:0:aspacem  <<< SHOW_SEGMENTS: out_of_memory (32 segments, 4 segnames)
--342:0:aspacem  ( 0) /home/xxx/workspace/valgrind/bin/lib/valgrind/memcheck-mips32-lin--342-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting
--342-- si_code=1;  Faulting address: 0x64;  sp: 0x430fe648

valgrind: the 'impossible' happened:
   Killed by fatal signal
==342==    at 0x380E234C: add_to_buf (m_debuglog.c:924)
==342==    by 0x380E16BC: myvprintf_str (m_debuglog.c:539)
==342==    by 0x380E2098: vgPlain_debugLog_vprintf (m_debuglog.c:847)
==342==    by 0x380E25AC: vgPlain_debugLog (m_debuglog.c:969)
==342==    by 0x380675D4: vgPlain_am_show_nsegments (aspacemgr-linux.c:593)
==342==    by 0x3804F164: vgPlain_out_of_memory_NORETURN (m_mallocfree.c:745)
==342==    by 0x38063C00: initialiseSector (m_transtab.c:1382)
==342==    by 0x38064830: vgPlain_add_to_transtab (m_transtab.c:1542)
==342==    by 0x3805C1E4: vgPlain_translate (m_translate.c:163
==342==    by 0x3809BAE0: vgPlain_scheduler (scheduler.c:1004)
==342==    by 0x380D8370: run_a_thread_NORETURN (syswrap-linux.c:103)
==342==    by 0x380D87FC: vgPlain_main_thread_wrapper_NORETURN (syswrap-linux.c:395)

sched status:
  running_tid=1

Thread 1: status = VgTs_Runnable
==342==    at 0x4000810: __start (in /lib/ld-2.8.so)
==342==    by 0x7E8E5D98: ???

天发国际娱乐城徽章:
0
2 [报告]
发表于 2013-12-24 12:29 |只看该作者
没人来回答此问题,那我就把编译过程中遇到的问题贴出来吧,给大家共享:

STEP 1:
下载最新版本的valgrind:
http://www.valgrind.org/downloads/valgrind-3.9.0.tar.bz2

目前支持的天发娱乐城,在官网上列表如下:
{x86,amd64,arm,ppc32,ppc64,s390x,mips32,mips64}-linux, arm-android (2.3 and later), x86-android (4.0 and later) and {x86,amd64}-darwin (Mac OS X 10.7, with limited support for 10..

STEP 2:
首先要配置编译选项,选择你的目标天发娱乐城,因为我是在mips32天发娱乐城上运行,所以配置如下:
./configure --host=mips-linux-gnu --prefix=/home/xxx/workspace/valgrind/bin --program-prefix=mips-linux-gnu- CFLAGS="-EL" LDFLAGS="-EL"
注意:大小端的问题;刚开始配置没有注意这个,运行总是报语法错误,后来运行file命令查看,发现与正常运行的程序差异在于这块;

1 $ file mips-linux-gnu-valgrind
2 mips-linux-gnu-valgrind: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1, dynamically linked (uses shared libs), for GNU/Linux 2.6.12, with unknown capability 0xf41 = 0x756e6700, not stripped


STEP 3:
生成Makefile后,直接编译即可;在编译过程中,会遇到卡在一个地方过不支,需将drd/Makefile中-O2修改为-O1:


1 DRD_CFLAGS =
2 --param inline-unit-growth=900
3 -O1
4 -Wextra
5 -Wformat-nonliteral
6 -Wno-inline
7 -Wno-unused-parameter



STEP 4:
安装,然后将执行文件copy到开发板上;需要注意的安装目录与你要拷贝到开发板上的路径要完全一致;
这点很重要,因为在编译时路径的hardcode已经在程序中了,如果不一致,运行时会提示找不到文件:

ex.
在host上,我编译安装valgrind的路径是:/home/xxx/valgrind/bin, 那么将valgrind拷贝到开发板上的路径也要是这个,程序才能正确执行;

STEP 5:
运行valgrind, 后面跟上要debug的文件即可;

天发国际娱乐城徽章:
0
3 [报告]
发表于 2014-05-05 14:30 |只看该作者
同mips32天发娱乐城,遇到的问题是:
  1. Reading syms from /lib/ld-2.12.2.so
  2. ...
  3. object doesn't have a symbol table
复制代码
导致下面的traceback不显示文件,行号
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP