<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Computer, Electron and Technology &#187; bug</title>
	<atom:link href="http://www.donevii.com/post/tag/bug/feed" rel="self" type="application/rss+xml" />
	<link>http://www.donevii.com</link>
	<description>关注技术、移动互联网以及一切 GEEK &#38; NERD 的事情</description>
	<lastBuildDate>Wed, 21 Dec 2011 10:49:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>MTK通过TRACE的栈信息寻找BUG原因与解决方法</title>
		<link>http://www.donevii.com/post/815.html</link>
		<comments>http://www.donevii.com/post/815.html#comments</comments>
		<pubDate>Fri, 15 May 2009 16:13:19 +0000</pubDate>
		<dc:creator>gavinkwoe</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[mtk]]></category>
		<category><![CDATA[trace]]></category>

		<guid isPermaLink="false">http://www.donevii.com/?p=815</guid>
		<description><![CDATA[前几天去一个公司帮他们解决BUG。BUG的描述是这样的，在使用在线QQ时，如果来电话，就会重启。没有发现ASSERT信息，只有stack dump信息。起初听他们描述，感觉像是QQ或者通话的问题。抓了TRACE... ]]></description>
			<content:encoded><![CDATA[<p>前几天去一个公司帮他们解决BUG。BUG的描述是这样的，在使用在线QQ时，如果来电话，就会重启。没有发现ASSERT信息，只有stack dump信息。起初听他们描述，感觉像是QQ或者通话的问题。抓了TRACE之后，发现是MED模块的问题，由于MED主要是一些媒体文件的解码。由于观察现象时发现，通话时，还没有来得及响铃，就开始重启，因此可以大概推知是来电振铃出了问题，具体出在什么地方，需要查找TRACE信息。从别人那里获取的TRACE信息如下：</p>
<p><a href="http://www.donevii.com/post/tag/trace" class="st_tag internal_tag" rel="tag" title="Posts tagged with trace">Trace</a> 1745424 150706 MOD_NIL <a href="http://www.donevii.com/post/tag/trace" class="st_tag internal_tag" rel="tag" title="Posts tagged with trace">TRACE</a>_ERROR [1] fatal error (4): Data_abort &#8211; MED<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR Exception type: data abort<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR software version:<br />
E500_A.1.4<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR boot mode: normal mode<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR rtc sec = 16, rtc min = 33, rtc hour = 1<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR rtc day = 1, rtc mon = 1, rtc wday = 1, rtc year = 9<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR execution unit: MEDMED<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR status: 0&#215;00000000<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR stack pointer: 0&#215;00169380<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR stack dump:<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x085569C9<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0xA0001BED<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x085569C9<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x085569C9<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x08480FD5<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x0847CE59<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x084DE0EF<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x0866D4D3<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x0845E407<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x0866D4A1<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR number of messages in the external queue: 0<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR messages in the external queue:<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     MSG_ID_INVALID_TYPE<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     MSG_ID_INVALID_TYPE<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     MSG_ID_INVALID_TYPE<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     MSG_ID_INVALID_TYPE<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     MSG_ID_INVALID_TYPE<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     MSG_ID_INVALID_TYPE<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     MSG_ID_INVALID_TYPE<br />
Trace 1745424 150706 MOD_NIL TRACE_ERROR     MSG_ID_INVALID_TYPE</p>
<p>观察TRACE，结合BUG描述，可以大致推知是MED的振铃问题，具体位置需要看catcher打印的栈信息。有些人遇到这个信息，就蒙了，感觉无从下手，我最早学习MTK时，也是无从下手，总觉得这样的信息没有ASSERT直观，一看就知道哪个文件哪一行出错。但ASSERT并不总是金牌，有一次遇到一个MEMCPY的ASSERT，调用的地方太多，照样需要查栈信息来寻找问题。当然写的代码，尽量在一些关键的地方加上ASSET，这会让人查找问题更轻松一些。当然有了这个信息，我们也可以大概推测出BUG的地方和原因的。要查找这个error的信息，必须要找到该软件版本对应的sym文件。该 sym和BIN文件同步生成，都位于BUILD文件下。该文件储存了ARM编绎器为软件中所有函数生成的地址。而出错时，MTK会保存当时栈中最近执行的 10条指令的地址，我们通过对这些地址的研究，就可以找到出错的地方。由于sym文件只保存了函数的地址，函数体里执行的代码地址没有列出，而一般打出的错误地址不会正好对应某个函数的地址，一般会会偏移N个单位。当然也有例外，我曾遇到一次出错，有一个地址正好和某函数地址对应。对于出错信息的地址与函数地址不对应的情况，我推测应该是函数体里的指令出错，所以应查找比该出错指令小且最近的函数。比如上例行 “Trace 1745424 150706 MOD_NIL TRACE_ERROR     0x085569C9”，我们在sym文件中不应该查找0x085569C9对应的指令，因为一般会一个也找不到，我们要查找x085569C或者 x085569对就的函数，这时大约可以查到许多函数，找到与该出错地址最近且比该地址小的地址对应的函数，十个地址大约可以找到十个左右的函数，通过仔细排查，确认以下函数：</p>
<p>med_int_left_size<br />
med_int_sfreeaud_main<br />
aud_tts_play_req_hdlr<br />
med_int_smalloc<br />
med_set_ext_memory_pool<br />
TCC_Task_Shell</p>
<p>如此可以大致确定问题出处和原因了，请教项目负责人，知道aud_tts_play_req_hdlr<br />
是语音王的播放函数，在呼入时，有来电报号，该功能和QQ都是从MED栈上动态分配内存，由于QQ占用了一部内存，有呼入电话时，语音王分配内存失败，导到语音解码故障。问题一下解决。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.donevii.com/post/815.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FFMPEG successfully reverse engineered RV30/RV40</title>
		<link>http://www.donevii.com/post/373.html</link>
		<comments>http://www.donevii.com/post/373.html#comments</comments>
		<pubDate>Thu, 20 Dec 2007 13:59:48 +0000</pubDate>
		<dc:creator>dengwei</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rv30]]></category>
		<category><![CDATA[rv40]]></category>
		<category><![CDATA[论坛]]></category>
		<category><![CDATA[评论]]></category>

		<guid isPermaLink="false">http://www.donevii.com/post/373.html</guid>
		<description><![CDATA[真是一个另人振奋的消息！ 今天在网上看相关的评论(GO)时看到的，我还没有测，据论坛(GO)上的人说还有一些小 BUG ？不过发帐日期是９月份的了... ]]></description>
			<content:encoded><![CDATA[<p>真是一个另人振奋的消息！</p>
<p>今天在网上看相关的评论(<a target="_blank" href="http://bbs.archlinux.org/viewtopic.php?id=37615">GO</a>)时看到的，我还没有测，据论坛(<a target="_blank" href="http://bbs.archlinux.org/viewtopic.php?id=37615">GO</a>)上的人说还有一些小 <a href="http://www.donevii.com/post/tag/bug" class="st_tag internal_tag" rel="tag" title="Posts tagged with bug">BUG</a> ？不过发帐日期是９月份的了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.donevii.com/post/373.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

