Repository: qpid-proton
Updated Branches:
  refs/heads/master d7ba57b6a -> c870da9fa


PROTON-1574: Fix AddressSanitizer: stack-use-after-scope

This is a strange error and probably a false one, but this fix removes it and is
otherwise harmless.

8: TEST: (coerce_test<V>())
8: =================================================================
8: ==522==ERROR: AddressSanitizer: stack-use-after-scope on address 
0x7ffc0fb69b78 at pc 0x7f67732cfde3 bp 0x7ffc0fb69a70 sp 0x7ffc0fb69a68
8: WRITE of size 8 at 0x7ffc0fb69b78 thread T0
8:     #0 0x7f67732cfde2 in std::_Vector_base<unsigned char, 
std::allocator<unsigned char> >::_Vector_impl::_Vector_impl() 
/nix/store/pdidaf83cvkrgx8xjgjdnl5m1naqjbfk-gcc-7.1.0/include/c++/7.1.0/bits/stl_vector.h:89
8:     #1 0x7f67732cfde2 in std::_Vector_base<unsigned char, 
std::allocator<unsigned char> >::_Vector_base() 
/nix/store/pdidaf83cvkrgx8xjgjdnl5m1naqjbfk-gcc-7.1.0/include/c++/7.1.0/bits/stl_vector.h:127
8:     #2 0x7f67732cfde2 in std::vector<unsigned char, std::allocator<unsigned 
char> >::vector() 
/nix/store/pdidaf83cvkrgx8xjgjdnl5m1naqjbfk-gcc-7.1.0/include/c++/7.1.0/bits/stl_vector.h:263
8:     #3 0x7f67732cfde2 in proton::binary::binary() 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/include/proton/binary.hpp:41
8:     #4 0x7f67732cfde2 in proton::scalar_base::scalar_base() 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/src/scalar_base.cpp:36
8:     #5 0x53022f in proton::scalar::scalar() 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/include/proton/./scalar.hpp:35
8:     #6 0x53022f in void proton::coerce<double>(proton::value const&, 
double&) 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/include/proton/./value.hpp:151
8:     #7 0x621343 in double proton::coerce<double>(proton::value const&) 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/include/proton/./value.hpp:141
8:     #8 0x621343 in void test::coerce_test<proton::value>() 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/src/include/scalar_test.hpp:129
8:     #9 0x67c623 in void test::scalar_test_group<proton::value>(int&) 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/src/include/scalar_test.hpp:202
8:     #10 0x41e5b7 in main 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/src/value_test.cpp:83
8:     #11 0x7f677042752f in __libc_start_main 
(/nix/store/l48biijfr1j6d5kdg911051x2phfjrz7-glibc-2.25/lib/libc.so.6+0x2052f)
8:     #12 0x439119 in _start 
(/home/jdanek/Work/repos/qpid-proton/build_sanitizers/proton-c/bindings/cpp/value_test+0x439119)
8:
8: Address 0x7ffc0fb69b78 is located in stack of thread T0 at offset 184 in 
frame
8:     #0 0x53011f in void proton::coerce<double>(proton::value const&, 
double&) 
/home/jdanek/Work/repos/qpid-proton/proton-c/bindings/cpp/include/proton/./value.hpp:148
8:
8:   This frame has 3 object(s):
8:     [32, 33) '<unknown>'
8:     [96, 112) 'd'
8:     [160, 208) 's' <== Memory access at offset 184 is inside this variable


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/c99ab4a2
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/c99ab4a2
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/c99ab4a2

Branch: refs/heads/master
Commit: c99ab4a267d9f4dc22b2ab1cbd530102002d2160
Parents: d7ba57b
Author: Alan Conway <acon...@redhat.com>
Authored: Thu Sep 7 10:00:02 2017 -0400
Committer: Alan Conway <acon...@redhat.com>
Committed: Thu Sep 7 10:09:24 2017 -0400

----------------------------------------------------------------------
 proton-c/bindings/cpp/include/proton/value.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/c99ab4a2/proton-c/bindings/cpp/include/proton/value.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/value.hpp 
b/proton-c/bindings/cpp/include/proton/value.hpp
index c1c0835..9ced1af 100644
--- a/proton-c/bindings/cpp/include/proton/value.hpp
+++ b/proton-c/bindings/cpp/include/proton/value.hpp
@@ -147,8 +147,8 @@ template<class T> T coerce(const value& v) { T x; coerce(v, 
x); return x; }
 /// @relatedalso proton::value
 template<class T> void coerce(const value& v, T& x) {
     codec::decoder d(v, false);
+    scalar s;
     if (type_id_is_scalar(v.type())) {
-        scalar s;
         d >> s;
         x = internal::coerce<T>(s);
     } else {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to