Bug 2148324
| Summary: | Got "Segmentation fault (core dumped)" when use %s to print first char of a string | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 9 | Reporter: | Fine Fan <ffan> |
| Component: | gcc | Assignee: | Marek Polacek <mpolacek> |
| gcc sub component: | system-version | QA Contact: | qe-baseos-tools-bugs |
| Status: | CLOSED NOTABUG | Docs Contact: | |
| Severity: | medium | ||
| Priority: | unspecified | CC: | ahajkova, fweimer, jakub, ohudlick, sipoyare |
| Version: | 9.2 | ||
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2022-11-25 08:17:19 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
If you build with -Wall (enable most warnings), GCC does complain:
$ gcc -Wall 18-3-String_s_first_char.c
18-3-String_s_first_char.c: In function ‘main’:
18-3-String_s_first_char.c:8:15: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
8 | printf ("%s\n",greetings[0]); // Here ,I should use %c
| ~^ ~~~~~~~~~~~~
| | |
| char * int
| %d
Address Sanitizer (-fsanitize=address) also catches the issue (but is not much more helpful than running the uninstrumented program under valgrind).
I'm not sure what else we can do here. This is just how C works, sorry.
Wow Thanks. |
Description of problem: Version-Release number of selected component (if applicable): [root@el92-221124 c]# rpm -q gcc gcc-11.3.1-2.1.el9.x86_64 [root@el92-221124 c]# rpm -q kernel kernel-5.14.0-200.el9.x86_64 [root@el92-221124 c]# How reproducible: Steps to Reproduce: [root@el92-221124 c]# cat 18-3-String_s_first_char.c #include<stdio.h> int main(){ char greetings[] = "Hello World!"; printf ("%s\n",greetings); printf ("%s\n",greetings[0]); // Here ,I should use %c } [root@el92-221124 c]# gcc -o 18-3-String_s_first_char 18-3-String_s_first_char.c [root@el92-221124 c]# ./18-3-String_s_first_char Hello World! Segmentation fault (core dumped) [root@el92-221124 c]# Actual results: Segmentation fault (core dumped) Expected results: when call gcc -o 18-3-String_s_first_char 18-3-String_s_first_char.c Will get some error tips maybe? Additional info: