public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/112350] New: gcc is not triggering a dangling reference indicating stack use after return
@ 2023-11-02 15:02 mohamed.selim at dxc dot com
2023-11-02 15:24 ` [Bug c++/112350] " pinskia at gcc dot gnu.org
2023-11-06 11:33 ` [Bug c++/112350] gcc is not triggering a dangling reference indicating stack use after return with -fsanitize=address and optimization mohamed.selim at dxc dot com
0 siblings, 2 replies; 3+ messages in thread
From: mohamed.selim at dxc dot com @ 2023-11-02 15:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112350
Bug ID: 112350
Summary: gcc is not triggering a dangling reference indicating
stack use after return
Product: gcc
Version: 13.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: mohamed.selim at dxc dot com
Target Milestone: ---
Scenario A:
gcc is not triggering a dangling reference indicating stack use after return,
the address-sanitizer does trigger though.
"==1==ERROR: AddressSanitizer: stack-use-after-return on"
Scenario B:
gcc triggers a warning "-Wreturn-local-addr"
The sanitizers intervenes in both scenarios as expected, while gcc warnings in
not triggered in scenario A. Looks like the reference_wrapper has something to
do with it.
compiler options used:
-std=c++14 -Wframe-address -Wreturn-local-addr -Wall -Wextra -Wpedantic
-fsanitize=address
#include <iostream>
#include <utility>
// scenario A
const int& foo()
{
int x = 234;
std::reference_wrapper<int> s{x};
return s.get();
}
// scenario B
const int& foo()
{
int s = 234;
return s;
}
int main()
{
const auto& f_res = foo();
std::cout << "result: " << f_res << "\n";
return 0;
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug c++/112350] gcc is not triggering a dangling reference indicating stack use after return
2023-11-02 15:02 [Bug c++/112350] New: gcc is not triggering a dangling reference indicating stack use after return mohamed.selim at dxc dot com
@ 2023-11-02 15:24 ` pinskia at gcc dot gnu.org
2023-11-06 11:33 ` [Bug c++/112350] gcc is not triggering a dangling reference indicating stack use after return with -fsanitize=address and optimization mohamed.selim at dxc dot com
1 sibling, 0 replies; 3+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-11-02 15:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112350
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
With optimization enabled and without -fsanitize=address we get:
<source>: In function 'const int& foo1()':
<source>:12:18: warning: using a dangling pointer to 'x' [-Wdangling-pointer=]
12 | return s.get();
| ^
<source>:9:9: note: 'x' declared here
9 | int x = 234;
| ^
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug c++/112350] gcc is not triggering a dangling reference indicating stack use after return with -fsanitize=address and optimization
2023-11-02 15:02 [Bug c++/112350] New: gcc is not triggering a dangling reference indicating stack use after return mohamed.selim at dxc dot com
2023-11-02 15:24 ` [Bug c++/112350] " pinskia at gcc dot gnu.org
@ 2023-11-06 11:33 ` mohamed.selim at dxc dot com
1 sibling, 0 replies; 3+ messages in thread
From: mohamed.selim at dxc dot com @ 2023-11-06 11:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112350
--- Comment #2 from Mohamed <mohamed.selim at dxc dot com> ---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112350&GoAheadAndLogIn=1
it's shown here that the warning is triggered by setting -O3 optimization level
to 3.
I don't know if such behavior is expected i.e. triggering warning is coupled
with optimization level!!!
So the above link to compiler explorer example shows only the diagnostic error
from the sanitizer, if -O3 is added the warning is triggered.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-11-06 11:33 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-02 15:02 [Bug c++/112350] New: gcc is not triggering a dangling reference indicating stack use after return mohamed.selim at dxc dot com
2023-11-02 15:24 ` [Bug c++/112350] " pinskia at gcc dot gnu.org
2023-11-06 11:33 ` [Bug c++/112350] gcc is not triggering a dangling reference indicating stack use after return with -fsanitize=address and optimization mohamed.selim at dxc dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).