Updating from 0303 to 0505 has problems

Quentin Barnes qbarnes@urbana.css.mot.com
Mon May 14 02:02:00 GMT 2007


On Sun, May 13, 2007 at 12:02:54AM -0500, Quentin Barnes wrote:
>On Thu, May 10, 2007 at 01:28:44AM -0400, Martin Hunt wrote:
>>On Wed, 2007-05-09 at 22:22 -0500, Quentin Barnes wrote:
>>
>>>
>>>The problem is the "poll warning: Interrupted system call"
>>>diagnostic message from staprun that's throwing off expect.  Below
>>>is a patch that fixes this problem for this message.  Now whether
>>>this is a fix or a workaround I don't know.  There are two possible
>>>fixes: 1) change stap_run.exp to account for the extra diagnostic,
>>>2) change staprun's reader_thread() not to generate the diagnostic
>>>in the first place.  I chose the former for this patch.  Which
>>>approach would be the better fix?
>>
>>I think I checked in a fix to this a few days ago. Certainly that error
>>message no longer is in the sources.  Of course, there could be new
>>problems now... Could you give either the current CVS version a try or a
>>snapshot from May 8 or later?  
>
>I tried it with the 0512 snapshot and it still has problems.
>
>Running it with add.stp:
>====================
># staprun .systemtap/cache/51/stap_51971f530865fabd17b2f297433cc8f6_473.ko  
>systemtap starting probe
>[pressed ^C here]
>#
>====================
>
>After I pressed ^C there should have been the additional messages:
>====================
>systemtap ending probe
>systemtap test success
>====================
>
>But there was nothing.  It just exited.  This is now also causing
>a lot of "eof" failures with the test suite since those messages
>are lost.

I played some and found the change below fixed losing the post
interrupt messages.  Whether it is a hack workaround or a real fix,
I don't know the code well enough to know.  So far, this also seemed
to fix many of the "eof" failures.


--- runtime/staprun/Orig/relay.c	2007-05-12 13:17:34.000000000 -0500
+++ runtime/staprun/relay.c	2007-05-13 18:08:13.000000000 -0500
@@ -76,7 +76,6 @@ static void *reader_thread(void *data)
 				fprintf(stderr, "poll error: %s\n",strerror(errno));
 				pthread_exit(NULL);
                         }
-			stop_threads = 1;
                 }
 		while ((rc = read(relay_fd[cpu], buf, sizeof(buf))) > 0) {
 			if (write(out_fd[cpu], buf, rc) != rc) {



More information about the Systemtap mailing list