<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Rewrite your Ruby VM at runtime to hot patch useful features</title>
	<atom:link href="http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/feed/" rel="self" type="application/rss+xml" />
	<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/</link>
	<description>technical ramblings from a wanna-be unix dinosaur</description>
	<lastBuildDate>Wed, 21 Jul 2010 07:31:26 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: String together global offset tables to build a Ruby memory profiler at time to bleed by Joe Damato</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-509</link>
		<dc:creator>String together global offset tables to build a Ruby memory profiler at time to bleed by Joe Damato</dc:creator>
		<pubDate>Mon, 25 Jan 2010 13:02:39 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-509</guid>
		<description>[...] be able to survive without reading the other articles in this series, but you can check them out here and [...]</description>
		<content:encoded><![CDATA[<p>[...] be able to survive without reading the other articles in this series, but you can check them out here and [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Damato (ice799)</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-513</link>
		<dc:creator>Joe Damato (ice799)</dc:creator>
		<pubDate>Sat, 12 Dec 2009 02:13:37 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-513</guid>
		<description>Glad you liked this post.&lt;br&gt;&lt;br&gt;1.) This technique allows you to examine and modify internal state in the Ruby VM itself. LD_PRELOAD lets you hook methods that the application would need to resolve (via the PLT). This technique can also be expanded to hook inline functions (as seen in the next post in this series). LD_PRELOAD can&#039;t do that, either. LD_PRELOAD is very useful, but doesn&#039;t afford the flexibility of this method.&lt;br&gt;&lt;br&gt;2.) Yes and also inline.&lt;br&gt;&lt;br&gt;3.) Sounds cool, but don&#039;t know if I&#039;d have the time to do it.&lt;br&gt;&lt;br&gt;4.) The trampoline can be generated at runtime. The next post in this series shows an example of how I generated a trampoline at runtime based on the instructions I was overwriting.&lt;br&gt;&lt;br&gt;&lt;br&gt;Hope that answers some questions and thanks for reading my blog!</description>
		<content:encoded><![CDATA[<p>Glad you liked this post.</p>
<p>1.) This technique allows you to examine and modify internal state in the Ruby VM itself. LD_PRELOAD lets you hook methods that the application would need to resolve (via the PLT). This technique can also be expanded to hook inline functions (as seen in the next post in this series). LD_PRELOAD can&#39;t do that, either. LD_PRELOAD is very useful, but doesn&#39;t afford the flexibility of this method.</p>
<p>2.) Yes and also inline.</p>
<p>3.) Sounds cool, but don&#39;t know if I&#39;d have the time to do it.</p>
<p>4.) The trampoline can be generated at runtime. The next post in this series shows an example of how I generated a trampoline at runtime based on the instructions I was overwriting.</p>
<p>Hope that answers some questions and thanks for reading my blog!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Brannan</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-512</link>
		<dc:creator>Paul Brannan</dc:creator>
		<pubDate>Sat, 12 Dec 2009 02:00:33 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-512</guid>
		<description>This is ridiculously cool!  How did we not end up talking about this at the conference?&lt;br&gt;&lt;br&gt;A few questions:&lt;br&gt;&lt;br&gt;1) What does this technique give you that LD_PRELOAD does not?  (I&#039;ve used LD_PRELOAD in the past to override time functions in C code)&lt;br&gt;2) Can this technique be used to rewrite functions that are declared static?&lt;br&gt;3) Would you consider splitting the tramponline code out of memprof into its own gem or library?  I might be interested in experimenting with it in my jit compiler.&lt;br&gt;4) Could the trampoline function be generated at run-time with a jit library or is it too specialized?</description>
		<content:encoded><![CDATA[<p>This is ridiculously cool!  How did we not end up talking about this at the conference?</p>
<p>A few questions:</p>
<p>1) What does this technique give you that LD_PRELOAD does not?  (I&#39;ve used LD_PRELOAD in the past to override time functions in C code)<br />2) Can this technique be used to rewrite functions that are declared static?<br />3) Would you consider splitting the tramponline code out of memprof into its own gem or library?  I might be interested in experimenting with it in my jit compiler.<br />4) Could the trampoline function be generated at run-time with a jit library or is it too specialized?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ice799</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-476</link>
		<dc:creator>ice799</dc:creator>
		<pubDate>Fri, 11 Dec 2009 18:13:37 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-476</guid>
		<description>Glad you liked this post.&lt;br&gt;&lt;br&gt;1.) This technique allows you to examine and modify internal state in the Ruby VM itself. LD_PRELOAD lets you hook methods that the application would need to resolve (via the PLT). This technique can also be expanded to hook inline functions (as seen in the next post in this series). LD_PRELOAD can&#039;t do that, either. LD_PRELOAD is very useful, but doesn&#039;t afford the flexibility of this method.&lt;br&gt;&lt;br&gt;2.) Yes and also inline.&lt;br&gt;&lt;br&gt;3.) Sounds cool, but don&#039;t know if I&#039;d have the time to do it.&lt;br&gt;&lt;br&gt;4.) The trampoline can be generated at runtime. The next post in this series shows an example of how I generated a trampoline at runtime based on the instructions I was overwriting.&lt;br&gt;&lt;br&gt;&lt;br&gt;Hope that answers some questions and thanks for reading my blog!</description>
		<content:encoded><![CDATA[<p>Glad you liked this post.</p>
<p>1.) This technique allows you to examine and modify internal state in the Ruby VM itself. LD_PRELOAD lets you hook methods that the application would need to resolve (via the PLT). This technique can also be expanded to hook inline functions (as seen in the next post in this series). LD_PRELOAD can&#39;t do that, either. LD_PRELOAD is very useful, but doesn&#39;t afford the flexibility of this method.</p>
<p>2.) Yes and also inline.</p>
<p>3.) Sounds cool, but don&#39;t know if I&#39;d have the time to do it.</p>
<p>4.) The trampoline can be generated at runtime. The next post in this series shows an example of how I generated a trampoline at runtime based on the instructions I was overwriting.</p>
<p>Hope that answers some questions and thanks for reading my blog!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Brannan</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-475</link>
		<dc:creator>Paul Brannan</dc:creator>
		<pubDate>Fri, 11 Dec 2009 18:00:33 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-475</guid>
		<description>This is ridiculously cool!  How did we not end up talking about this at the conference?&lt;br&gt;&lt;br&gt;A few questions:&lt;br&gt;&lt;br&gt;1) What does this technique give you that LD_PRELOAD does not?  (I&#039;ve used LD_PRELOAD in the past to override time functions in C code)&lt;br&gt;2) Can this technique be used to rewrite functions that are declared static?&lt;br&gt;3) Would you consider splitting the tramponline code out of memprof into its own gem or library?  I might be interested in experimenting with it in my jit compiler.&lt;br&gt;4) Could the trampoline function be generated at run-time with a jit library or is it too specialized?</description>
		<content:encoded><![CDATA[<p>This is ridiculously cool!  How did we not end up talking about this at the conference?</p>
<p>A few questions:</p>
<p>1) What does this technique give you that LD_PRELOAD does not?  (I&#39;ve used LD_PRELOAD in the past to override time functions in C code)<br />2) Can this technique be used to rewrite functions that are declared static?<br />3) Would you consider splitting the tramponline code out of memprof into its own gem or library?  I might be interested in experimenting with it in my jit compiler.<br />4) Could the trampoline function be generated at run-time with a jit library or is it too specialized?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hot patching inlined functions with x86_64 asm metaprogramming at time to bleed by Joe Damato</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-469</link>
		<dc:creator>Hot patching inlined functions with x86_64 asm metaprogramming at time to bleed by Joe Damato</dc:creator>
		<pubDate>Thu, 10 Dec 2009 13:01:18 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-469</guid>
		<description>[...] article will make reference to information in my previous article Rewrite your Ruby VM at runtime to hot patch useful features so be sure to check it out if you find yourself lost during this [...]</description>
		<content:encoded><![CDATA[<p>[...] article will make reference to information in my previous article Rewrite your Ruby VM at runtime to hot patch useful features so be sure to check it out if you find yourself lost during this [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ice799</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-466</link>
		<dc:creator>ice799</dc:creator>
		<pubDate>Mon, 23 Nov 2009 23:41:55 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-466</guid>
		<description>As long as I can mark it PROT_WRITE, write the code and then mark it PROT_EXEC (and disable PROT_WRITE, of course) it&#039;ll work. I don&#039;t use SELinux, though so I have no way of testing it.&lt;br&gt;&lt;br&gt;Either way, nothing in the article was designed to be portable or to work on anything other than an amd64 vanilla linux box.&lt;br&gt;&lt;br&gt;Thanks for reading.</description>
		<content:encoded><![CDATA[<p>As long as I can mark it PROT_WRITE, write the code and then mark it PROT_EXEC (and disable PROT_WRITE, of course) it&#39;ll work. I don&#39;t use SELinux, though so I have no way of testing it.</p>
<p>Either way, nothing in the article was designed to be portable or to work on anything other than an amd64 vanilla linux box.</p>
<p>Thanks for reading.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: libc</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-465</link>
		<dc:creator>libc</dc:creator>
		<pubDate>Mon, 23 Nov 2009 23:37:49 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-465</guid>
		<description>It broke my link: &lt;a href=&quot;http://tinyurl.com/yasnogm&quot; rel=&quot;nofollow&quot;&gt;http://tinyurl.com/yasnogm&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>It broke my link: <a href="http://tinyurl.com/yasnogm" rel="nofollow">http://tinyurl.com/yasnogm</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: libc</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-464</link>
		<dc:creator>libc</dc:creator>
		<pubDate>Mon, 23 Nov 2009 23:35:38 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-464</guid>
		<description>mmap PROT_EXEC&#124;PROT_WRITE wouldn&#039;t work on SELinux. &lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://code.google.com/p/go/issues/detail?id=47&amp;colspec=ID%2520Type%2520Status%2520Owner%2520Summary&quot; rel=&quot;nofollow&quot;&gt;http://code.google.com/p/go/issues/detail?id=47...&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>mmap PROT_EXEC|PROT_WRITE wouldn&#39;t work on SELinux. </p>
<p><a href="http://code.google.com/p/go/issues/detail?id=47&#038;colspec=ID%2520Type%2520Status%2520Owner%2520Summary" rel="nofollow"></a><a href="http://code.google.com/p/go/issues/detail?id=47.." rel="nofollow">http://code.google.com/p/go/issues/detail?id=47..</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ice799</title>
		<link>http://timetobleed.com/rewrite-your-ruby-vm-at-runtime-to-hot-patch-useful-features/comment-page-1/#comment-462</link>
		<dc:creator>ice799</dc:creator>
		<pubDate>Mon, 23 Nov 2009 20:49:26 +0000</pubDate>
		<guid isPermaLink="false">http://timetobleed.com/?p=1253#comment-462</guid>
		<description>I&#039;m glad you enjoyed the ugly hack. Thanks for reading!</description>
		<content:encoded><![CDATA[<p>I&#39;m glad you enjoyed the ugly hack. Thanks for reading!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
