Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Previously, systemtap's user module build id check was not aware of
address space. Consequently, running a userspace tracing script could
fail. In this updated package, the get_user() function in the build id
check is bracketed by set_fs(), which ensures that the function is called
in the correct space and that userspace tracing scripts run correctly.
Description of problem:
Running any userpspace tracing script on s390x shows errors like this when running:
Pass 5: starting run.
ERROR: Build-id mismatch: "write" vs. "write" byte 0 (0x64 vs 0x00) rc 0 -14
ERROR: Build-id mismatch: "write" vs. "write" byte 0 (0x64 vs 0x00) rc 0 -14
The tracing script actually seems to run fine, but the ERRORs are confusing. Also, this didn't happen with RHEL6.0, so this is a regression. Not sure if this is caused by elfutils or systemtap.
Version-Release number of selected component (if applicable):
systemtap-1.4-3.el6.s390x
How reproducible:
always
Steps to Reproduce:
1. gcc write.c -o write -g
2. stap -c ./write user.stp -v
3.
Actual results:
(...)
Pass 5: starting run.
ERROR: Build-id mismatch: "write" vs. "write" byte 0 (0x64 vs 0x00) rc 0 -14
ERROR: Build-id mismatch: "write" vs. "write" byte 0 (0x64 vs 0x00) rc 0 -14
Begin
Function enter
Function return
End
Pass 5: run completed in 0usr/50sys/123real ms.
Pass 5: run failed. Try again with another '--vp 00001' option.
Expected results:
(...)
Pass 5: starting run.
Begin
Function enter
Function return
End
Pass 5: run completed in 0usr/50sys/123real ms.
Pass 5: run failed. Try again with another '--vp 00001' option.
Additional info:
# cat write.c
#include <stdio.h>
int write_fctn(int a){
FILE *fp = fopen("stuff.tmp", "w");
fprintf(fp, "Written %d\n", a);
close(fp);
return a;
}
int main(int argc, char **argv){
write_fctn(1);
return 0;
}
# cat user.stp
probe begin{
printf("Begin\n");
}
probe process("./write").function("write_fctn"){
printf("Function enter\n");
}
probe process("./write").function("write_fctn").return{
printf("Function return\n");
}
probe end{
printf("End\n");
}
scox fixed the build-id checking logic in upstream commit #71222c72d43.
Comment 11Ruediger Landmann
2011-05-18 05:09:07 UTC
Technical note added. If any revisions are required, please edit the "Technical Notes" field
accordingly. All revisions will be proofread by the Engineering Content Services team.
New Contents:
Previously, systemtap's user module build id check was not aware of
address space. Consequently, running a userspace tracing script could
fail. In this updated package, the get_user() function in the build id
check is bracketed by set_fs(), which ensures that the function is called
in the correct space and that userspace tracing scripts run correctly.
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.
http://rhn.redhat.com/errata/RHBA-2011-0651.html
Description of problem: Running any userpspace tracing script on s390x shows errors like this when running: Pass 5: starting run. ERROR: Build-id mismatch: "write" vs. "write" byte 0 (0x64 vs 0x00) rc 0 -14 ERROR: Build-id mismatch: "write" vs. "write" byte 0 (0x64 vs 0x00) rc 0 -14 The tracing script actually seems to run fine, but the ERRORs are confusing. Also, this didn't happen with RHEL6.0, so this is a regression. Not sure if this is caused by elfutils or systemtap. Version-Release number of selected component (if applicable): systemtap-1.4-3.el6.s390x How reproducible: always Steps to Reproduce: 1. gcc write.c -o write -g 2. stap -c ./write user.stp -v 3. Actual results: (...) Pass 5: starting run. ERROR: Build-id mismatch: "write" vs. "write" byte 0 (0x64 vs 0x00) rc 0 -14 ERROR: Build-id mismatch: "write" vs. "write" byte 0 (0x64 vs 0x00) rc 0 -14 Begin Function enter Function return End Pass 5: run completed in 0usr/50sys/123real ms. Pass 5: run failed. Try again with another '--vp 00001' option. Expected results: (...) Pass 5: starting run. Begin Function enter Function return End Pass 5: run completed in 0usr/50sys/123real ms. Pass 5: run failed. Try again with another '--vp 00001' option. Additional info: # cat write.c #include <stdio.h> int write_fctn(int a){ FILE *fp = fopen("stuff.tmp", "w"); fprintf(fp, "Written %d\n", a); close(fp); return a; } int main(int argc, char **argv){ write_fctn(1); return 0; } # cat user.stp probe begin{ printf("Begin\n"); } probe process("./write").function("write_fctn"){ printf("Function enter\n"); } probe process("./write").function("write_fctn").return{ printf("Function return\n"); } probe end{ printf("End\n"); }