<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-2779459907196464190.post1093666262778750680..comments</id><updated>2008-10-29T09:03:04.167-07:00</updated><category term='LLVM'/><category term='getpid'/><category term='memory access'/><category term='mmap'/><category term='Multi-variant Execution'/><category term='shared memory'/><category term='ptrace'/><category term='File'/><category term='system-call emulation'/><category term='FIFO'/><category term='pid'/><category term='reverse stack'/><category term='libc'/><category term='gcc'/><category term='buffer overflow'/><category term='signal'/><category term='pipe'/><category term='false-positives'/><title type='text'>Comments on Babak Salamat's Research Blog: Low-overhead access to the memory space of a trace...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.babaks.com/feeds/1093666262778750680/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default'/><link rel='alternate' type='text/html' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html'/><author><name>Babak</name><uri>http://www.blogger.com/profile/17032845352327699144</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2779459907196464190.post-5335958846451917302</id><published>2008-10-29T09:03:00.000-07:00</published><updated>2008-10-29T09:03:00.000-07:00</updated><title type='text'>This is great info to know.</title><content type='html'>This is great info to know.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/5335958846451917302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/5335958846451917302'/><link rel='alternate' type='text/html' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html?showComment=1225296180000#c5335958846451917302' title=''/><author><name>Lovie</name><uri>http://sephirainsurance.blogspot.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html' ref='tag:blogger.com,1999:blog-2779459907196464190.post-1093666262778750680' source='http://www.blogger.com/feeds/2779459907196464190/posts/default/1093666262778750680' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2112967905'/></entry><entry><id>tag:blogger.com,1999:blog-2779459907196464190.post-1631664341352426746</id><published>2008-05-28T12:51:00.000-07:00</published><updated>2008-05-28T12:51:00.000-07:00</updated><title type='text'>Thanks again for your thorough explanation.&lt;br&gt;I w...</title><content type='html'>Thanks again for your thorough explanation.&lt;BR/&gt;I will definitely consider your method and try to implement it.&lt;BR/&gt;&lt;BR/&gt;Regarding the localhost sockets, I think they are not appropriate for this project, because it is very important that no process from other sessions can send any information to the tracer.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/1631664341352426746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/1631664341352426746'/><link rel='alternate' type='text/html' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html?showComment=1212004260000#c1631664341352426746' title=''/><author><name>Babak</name><uri>http://www.blogger.com/profile/17032845352327699144</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html' ref='tag:blogger.com,1999:blog-2779459907196464190.post-1093666262778750680' source='http://www.blogger.com/feeds/2779459907196464190/posts/default/1093666262778750680' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-656499358'/></entry><entry><id>tag:blogger.com,1999:blog-2779459907196464190.post-6192642557426949464</id><published>2008-05-28T04:55:00.000-07:00</published><updated>2008-05-28T04:55:00.000-07:00</updated><title type='text'>Right, I meant that you start with a pipe between ...</title><content type='html'>Right, I meant that you start with a pipe between tracer and tracee, and then when the tracee spawns tracee2, there is another pipe created.  Initially that also connects tracer and tracee, but tracee then passes its end of the pipe to tracee2.  tracer's new thread should be able to access the tracer end of the new pipe fine, since file descriptors are shared among threads, but if tracer2 is a separate process you can pass the fd on that side as well.&lt;BR/&gt;&lt;BR/&gt;tracing the main program:&lt;BR/&gt;&lt;BR/&gt;tracer [pipe] tracee&lt;BR/&gt;&lt;BR/&gt;spawn tracee2:&lt;BR/&gt;&lt;BR/&gt;tracer [pipe] tracee&lt;BR/&gt;              tracee2&lt;BR/&gt;&lt;BR/&gt;create a new pipe between tracer and tracee:&lt;BR/&gt;&lt;BR/&gt;tracer [pipe] tracee&lt;BR/&gt;tracer [pipe2] tracee&lt;BR/&gt;              tracee2&lt;BR/&gt;&lt;BR/&gt;pass the tracee end of pipe2 to tracee2, and close on tracee:&lt;BR/&gt;&lt;BR/&gt;tracer [pipe] tracee&lt;BR/&gt;tracer [pipe2] tracee2&lt;BR/&gt;&lt;BR/&gt;(This is all assuming that you can't just do the setup of the new pipe2 in tracee before forking tracee2, in which case it could be inherited more simply.)&lt;BR/&gt;&lt;BR/&gt;You'll need a unix socket over which to pass the pipe endpoint to traced children, but that's roughly the same as setting up the FIFO, and you only have to use it for the handshake.&lt;BR/&gt;&lt;BR/&gt;There was also a time, at least on Linux, when localhost networking was faster than some FIFO constructs.  You might try UDP (with all the checksums turned off) on a lark as well, though the namespace of sockets is a little smaller than that of FIFOs. :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/6192642557426949464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/6192642557426949464'/><link rel='alternate' type='text/html' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html?showComment=1211975700000#c6192642557426949464' title=''/><author><name>shaver</name><uri>http://www.blogger.com/profile/08889971578086598835</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html' ref='tag:blogger.com,1999:blog-2779459907196464190.post-1093666262778750680' source='http://www.blogger.com/feeds/2779459907196464190/posts/default/1093666262778750680' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1012913054'/></entry><entry><id>tag:blogger.com,1999:blog-2779459907196464190.post-2920560217726074120</id><published>2008-05-27T22:09:00.000-07:00</published><updated>2008-05-27T22:09:00.000-07:00</updated><title type='text'>Thank you very much for your comment.&lt;br&gt;I guess t...</title><content type='html'>Thank you very much for your comment.&lt;BR/&gt;I guess the method explained in the link you provided, does not work for my case.&lt;BR/&gt;In my project, there is one main tracer that spawns two or more tracees. To make it simple, let's say it spawns just one tracee. We can create pipes between the tracer and the tracee, but if the tracee creates a new child, we also create a new tracer thread and let the new thread trace the child. Now, we need new communication channels between the new tracer and the new tracee and just passing the file descriptors of the existing pipes to them does not work. Those pipes would be used to communicate between the old tracer and tracee and we need new channels.&lt;BR/&gt;&lt;BR/&gt;The method explained in that link explains how to pass open file descriptors to another process.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/2920560217726074120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/2920560217726074120'/><link rel='alternate' type='text/html' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html?showComment=1211951340000#c2920560217726074120' title=''/><author><name>Babak</name><uri>http://www.blogger.com/profile/17032845352327699144</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html' ref='tag:blogger.com,1999:blog-2779459907196464190.post-1093666262778750680' source='http://www.blogger.com/feeds/2779459907196464190/posts/default/1093666262778750680' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-656499358'/></entry><entry><id>tag:blogger.com,1999:blog-2779459907196464190.post-942260816173925248</id><published>2008-05-27T21:17:00.000-07:00</published><updated>2008-05-27T21:17:00.000-07:00</updated><title type='text'>If you're on a modernish Unix system, I think you ...</title><content type='html'>If you're on a modernish Unix system, I think you could probably create a pipe between tracer and tracee, and then have tracee pass the file descriptor for its endpoint to the new child.  That would get you back down to the 40-byte threshold, if I'm understanding correctly.&lt;BR/&gt;&lt;BR/&gt;&lt;A HREF="http://archives.neohapsis.com/archives/postfix/2000-09/1476.html" REL="nofollow"&gt;This mailing list post&lt;/A&gt; has a good an explanation as you're likely to find of the mechanics.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/942260816173925248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779459907196464190/1093666262778750680/comments/default/942260816173925248'/><link rel='alternate' type='text/html' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html?showComment=1211948220000#c942260816173925248' title=''/><author><name>shaver</name><uri>http://www.blogger.com/profile/08889971578086598835</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.babaks.com/2008/05/low-overhead-access-to-memory-space-of.html' ref='tag:blogger.com,1999:blog-2779459907196464190.post-1093666262778750680' source='http://www.blogger.com/feeds/2779459907196464190/posts/default/1093666262778750680' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1012913054'/></entry></feed>
