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