<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openvz.org/index.php?action=history&amp;feed=atom&amp;title=Disassembling_the_kernel</id>
	<title>Disassembling the kernel - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openvz.org/index.php?action=history&amp;feed=atom&amp;title=Disassembling_the_kernel"/>
	<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Disassembling_the_kernel&amp;action=history"/>
	<updated>2026-04-09T16:47:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=Disassembling_the_kernel&amp;diff=6354&amp;oldid=prev</id>
		<title>Xemul: Created</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Disassembling_the_kernel&amp;diff=6354&amp;oldid=prev"/>
		<updated>2008-08-22T10:36:30Z</updated>

		<summary type="html">&lt;p&gt;Created&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This page describes how to obtain sufficient disassembling of your kernel when reporting a new BUG caught on a self-compiled kernel.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt; utility ==&lt;br /&gt;
&lt;br /&gt;
The main utility used to do it is the &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt; one. Most of the time it's enough just to run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# objdump -dr &amp;lt;the-binary-file-to-dump&amp;gt; &amp;gt; &amp;lt;the-output-file&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the disassembled binary will be obtained.&lt;br /&gt;
&lt;br /&gt;
Most often you'd need to provide the dump of the &amp;lt;code&amp;gt;vmlinu'''x'''&amp;lt;/code&amp;gt; file like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# objdump -dr vmlinux-&amp;lt;kernel-version&amp;gt; &amp;gt; vmlinux.decoded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We'll need the &amp;lt;code&amp;gt;vmlinux.decoded&amp;lt;/code&amp;gt; file in this case.&lt;br /&gt;
&lt;br /&gt;
== Some hints that can be get from the kernel BUG report ==&lt;br /&gt;
&lt;br /&gt;
Let's look at how a BUG report can look (in the &amp;lt;code&amp;gt;dmesg&amp;lt;/code&amp;gt; output)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BUG: unable to handle kernel NULL pointer dereference at virtual address 00000044&lt;br /&gt;
 printing eip:&lt;br /&gt;
c05d575b&lt;br /&gt;
*pde = 00000000&lt;br /&gt;
Oops: 0000 [#1]&lt;br /&gt;
SMP&lt;br /&gt;
Modules linked in: ...&lt;br /&gt;
...&lt;br /&gt;
 Call Trace:&lt;br /&gt;
 [&amp;lt;c0429ea3&amp;gt;] local_bh_enable+0x95/0xa4&lt;br /&gt;
 ...&lt;br /&gt;
 [&amp;lt;c05bc1ba&amp;gt;] net_rx_action+0x8f/0x185&lt;br /&gt;
 [&amp;lt;c05b1aa9&amp;gt;] kernel_sendmsg+0x2f/0x3d&lt;br /&gt;
 [&amp;lt;d0a7e24f&amp;gt;] xs_send_kvec+0x92/0x9a [sunrpc]&lt;br /&gt;
 [&amp;lt;c048e3bc&amp;gt;] destroy_inode+0x24/0x33&lt;br /&gt;
 [&amp;lt;d0a7e38e&amp;gt;] xs_sendpages+0x82/0x128 [sunrpc]&lt;br /&gt;
 ...&lt;br /&gt;
 [&amp;lt;d0a80732&amp;gt;] rpc_async_schedule+0x0/0x8 [sunrpc]&lt;br /&gt;
 [&amp;lt;c0433d6a&amp;gt;] run_workqueue+0x78/0xf5&lt;br /&gt;
 [&amp;lt;c0433de7&amp;gt;] worker_thread+0x0/0xdc&lt;br /&gt;
 ...&lt;br /&gt;
 [&amp;lt;c04371fb&amp;gt;] kthread+0x0/0x55&lt;br /&gt;
 [&amp;lt;c0405913&amp;gt;] kernel_thread_helper+0x7/0x10&lt;br /&gt;
 =======================&lt;br /&gt;
 ...&lt;br /&gt;
EIP: [&amp;lt;c05d575b&amp;gt;] ip_route_output_slow+0x40/0x6fa SS:ESP 0068:cf73bbbc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I've thrown away some unneeded info, so as you can see some function names in the stack trace are accompanied with the &amp;lt;code&amp;gt;[sunrpc]&amp;lt;/code&amp;gt; string. This is a module name, in you traces you can see some other modules. So, when you disassembled the &amp;lt;code&amp;gt;vmlinux&amp;lt;/code&amp;gt; file and attached this to the BUG report, very likely we'll ask you to disassemble the modules, that are seen in the stack trace, so you'd have to run the&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# objdump -dr /lib/modules/&amp;lt;version&amp;gt;/&amp;lt;path&amp;gt;/&amp;lt;module-name&amp;gt;.ko &amp;gt; &amp;lt;module-name&amp;gt;.decoded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
command and attach this module dump as well. Note, that the string&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EIP: [&amp;lt;c05d575b&amp;gt;] ip_route_output_slow+0x40/0x6fa SS:ESP 0068:cf73bbbc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
also contains the function name, that can also belong to some module.&lt;br /&gt;
&lt;br /&gt;
[[Category:Kernel]]&lt;br /&gt;
[[Category:HOWTO]]&lt;/div&gt;</summary>
		<author><name>Xemul</name></author>
		
	</entry>
</feed>