-
Notifications
You must be signed in to change notification settings - Fork 94
Open
Description
From https://trac.cppcheck.net/ticket/14268.
#include "missing.h"
#define PREFIX_WITH_MACRO(test_name) Macro##test_name
TEST_P(PREFIX_WITH_MACRO(NamingTest), n) {}$ ./simplecpp a.cpp -D"TEST_P(A,B)=void __ ## A ## _ ## B ( )"
==153198==ERROR: AddressSanitizer: stack-use-after-return on address 0x7bb828201398 at pc 0x55c85b5c80b3 bp 0x7ffd401c95e0 sp 0x7ffd401c95d0
READ of size 8 at 0x7bb828201398 thread T0
#0 0x55c85b5c80b2 in std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::size() const /usr/include/c++/15.2.1/bits/stl_vector.h:1119
#1 0x55c85b5c80b2 in simplecpp::Location::file[abi:cxx11]() const /home/user/CLionProjects/simplecpp/simplecpp.h:108
#2 0x55c85b5c80b2 in main /home/user/CLionProjects/simplecpp/main.cpp:210
#3 0x7fb829c27674 (/usr/lib/libc.so.6+0x27674) (BuildId: 4fe011c94a88e8aeb6f2201b9eb369f42b4a1e9e)
#4 0x7fb829c27728 in __libc_start_main (/usr/lib/libc.so.6+0x27728) (BuildId: 4fe011c94a88e8aeb6f2201b9eb369f42b4a1e9e)
#5 0x55c85b5c8cf4 in _start (/home/user/CLionProjects/simplecpp/simplecpp+0x16cf4) (BuildId: 5a0940bf2b4df8317a2d3a027c16b44de010a853)
Address 0x7bb828201398 is located in stack of thread T0 at offset 5016 in frame
#0 0x55c85b60336f in simplecpp::preprocess(simplecpp::TokenList&, simplecpp::TokenList const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, simplecpp::FileDataCache&, simplecpp::DUI const&, std::__cxx11::list<simplecpp::Output, std::allocator<simplecpp::Output> >*, std::__cxx11::list<simplecpp::MacroUsage, std::allocator<simplecpp::MacroUsage> >*, std::__cxx11::list<simplecpp::IfCond, std::allocator<simplecpp::IfCond> >*) /home/user/CLionProjects/simplecpp/simplecpp.cpp:3285
This frame has 340 object(s):
[32, 33) '<unknown>'
[48, 49) '<unknown>'
[64, 65) '<unknown>'
[80, 81) '<unknown>'
[96, 97) '<unknown>'
[112, 113) '<unknown>'
[128, 129) '<unknown>'
[144, 145) '<unknown>'
[160, 161) '<unknown>'
[176, 177) '<unknown>'
[192, 193) '<unknown>'
[208, 209) '<unknown>'
[224, 225) '<unknown>'
[240, 241) '<unknown>'
[256, 257) '<unknown>'
[272, 273) '<unknown>'
[288, 289) '<unknown>'
[304, 305) '<unknown>'
[320, 321) '<unknown>'
[336, 337) '<unknown>'
[352, 353) '<unknown>'
[368, 369) '<unknown>'
[384, 385) '<unknown>'
[400, 401) '<unknown>'
[416, 417) '<unknown>'
[432, 433) '<unknown>'
[448, 449) '<unknown>'
[464, 465) '<unknown>'
[480, 481) '<unknown>'
[496, 497) '<unknown>'
[512, 513) '<unknown>'
[528, 529) '<unknown>'
[544, 545) '<unknown>'
[560, 561) '<unknown>'
[576, 577) '<unknown>'
[592, 593) '<unknown>'
[608, 609) '<unknown>'
[624, 625) '<unknown>'
[640, 641) '<unknown>'
[656, 657) '<unknown>'
[672, 673) '<unknown>'
[688, 689) '<unknown>'
[704, 705) '<unknown>'
[720, 721) '<unknown>'
[736, 737) '<unknown>'
[752, 753) '<unknown>'
[768, 769) '__map_alloc'
[784, 785) '<unknown>'
[800, 801) '<unknown>'
[816, 817) '<unknown>'
[832, 833) '<unknown>'
[848, 849) '<unknown>'
[864, 865) '<unknown>'
[880, 881) '<unknown>'
[896, 897) '<unknown>'
[912, 913) '<unknown>'
[928, 929) '<unknown>'
[944, 945) '__map_alloc'
[960, 961) '__map_alloc'
[976, 977) '__map_alloc'
[992, 993) '<unknown>'
[1008, 1009) '__map_alloc'
[1024, 1025) '__map_alloc'
[1040, 1041) '__map_alloc'
[1056, 1057) '__lhs' (line 3284)
[1072, 1073) '__lhs' (line 3284)
[1088, 1092) '<unknown>'
[1104, 1108) '<unknown>'
[1120, 1124) '<unknown>'
[1136, 1144) 'it' (line 3319)
[1168, 1176) '<unknown>'
[1200, 1208) '<unknown>'
[1232, 1240) '<unknown>'
[1264, 1272) '<unknown>'
[1296, 1304) '<unknown>'
[1328, 1336) '<unknown>'
[1360, 1368) 'it' (line 3385)
[1392, 1400) '<unknown>'
[1424, 1432) '<unknown>'
[1456, 1464) 'rawtok' (line 3393)
[1488, 1496) '<unknown>'
[1520, 1528) '<unknown>'
[1552, 1560) 'it' (line 3453)
[1584, 1592) '<unknown>'
[1616, 1624) 'inctok' (line 3490)
[1648, 1656) '<unknown>'
[1680, 1688) '<unknown>'
[1712, 1720) '<unknown>'
[1744, 1752) '<unknown>'
[1776, 1784) '<unknown>'
[1808, 1816) '<unknown>'
[1840, 1848) '<unknown>'
[1872, 1880) '<unknown>'
[1904, 1912) '<unknown>'
[1936, 1944) 'tmp' (line 3659)
[1968, 1976) 'macroIt' (line 3779)
[2000, 2008) '<unknown>'
[2032, 2040) '<unknown>'
[2064, 2072) '<unknown>'
[2096, 2104) '<unknown>'
[2128, 2136) 'usageIt' (line 3784)
[2160, 2168) '<unknown>'
[2192, 2200) '<unknown>'
[2224, 2232) '<unknown>'
[2256, 2264) '<unknown>'
[2288, 2296) '<unknown>'
[2320, 2328) '<unknown>'
[2352, 2360) '<unknown>'
[2384, 2392) '<unknown>'
[2416, 2424) '<unknown>'
[2448, 2456) '<unknown>'
[2480, 2488) '<unknown>'
[2512, 2520) '<unknown>'
[2544, 2552) '<unknown>'
[2576, 2584) '<unknown>'
[2608, 2616) '<unknown>'
[2640, 2648) '<unknown>'
[2672, 2680) '<unknown>'
[2704, 2712) '<unknown>'
[2736, 2744) '<unknown>'
[2768, 2776) '<unknown>'
[2800, 2808) '<unknown>'
[2832, 2840) '<unknown>'
[2864, 2872) '<unknown>'
[2896, 2904) '<unknown>'
[2928, 2936) '<unknown>'
[2960, 2968) '<unknown>'
[2992, 3000) '<unknown>'
[3024, 3032) '<unknown>'
[3056, 3064) '<unknown>'
[3088, 3096) '<unknown>'
[3120, 3128) '<unknown>'
[3152, 3160) '<unknown>'
[3184, 3192) '<unknown>'
[3216, 3224) '<unknown>'
[3248, 3256) '<unknown>'
[3280, 3288) '<unknown>'
[3312, 3320) '<unknown>'
[3344, 3352) '<unknown>'
[3376, 3384) '<unknown>'
[3408, 3416) '<unknown>'
[3440, 3448) '__an'
[3472, 3480) 't' (line 3260)
[3504, 3512) '<unknown>'
[3536, 3544) '<unknown>'
[3568, 3576) '__j'
[3600, 3608) '<unknown>'
[3632, 3640) '<unknown>'
[3664, 3672) '<unknown>'
[3696, 3704) '<unknown>'
[3728, 3736) '<unknown>'
[3760, 3768) '<unknown>'
[3792, 3800) '<unknown>'
[3824, 3832) '<unknown>'
[3856, 3864) '<unknown>'
[3888, 3896) '<unknown>'
[3920, 3936) '<unknown>'
[3952, 3968) '<unknown>'
[3984, 4000) '<unknown>'
[4016, 4032) '<unknown>'
[4048, 4064) '<unknown>'
[4080, 4096) '<unknown>'
[4112, 4128) '<unknown>'
[4144, 4160) '<unknown>'
[4176, 4192) '<unknown>'
[4208, 4224) '<unknown>'
[4240, 4256) '<unknown>'
[4272, 4288) '<unknown>'
[4304, 4320) '<unknown>'
[4336, 4352) '<unknown>'
[4368, 4384) '<unknown>'
[4400, 4416) '<unknown>'
[4432, 4448) '<unknown>'
[4464, 4480) '<unknown>'
[4496, 4512) '<unknown>'
[4528, 4544) '<unknown>'
[4560, 4576) '<unknown>'
[4592, 4608) '<unknown>'
[4624, 4640) '<unknown>'
[4656, 4672) '<unknown>'
[4688, 4704) '__guard'
[4720, 4736) '<unknown>'
[4752, 4768) '__guard'
[4784, 4800) '<unknown>'
[4816, 4832) '__guard'
[4848, 4864) '<unknown>'
[4880, 4896) '__guard'
[4912, 4928) '<unknown>'
[4944, 4960) '__guard'
[4976, 4992) '<unknown>'
[5008, 5032) 'dummy' (line 3314) <== Memory access at offset 5016 is inside this variable
[5072, 5096) '<unknown>'
[5136, 5160) 'loc' (line 3755)
[5200, 5224) 'usage' (line 3781)
[5264, 5296) '__tmp'
[5328, 5360) '__tmp'
[5392, 5424) '__tmp'
[5456, 5488) '__tmp'
[5520, 5552) '__tmp'
[5584, 5616) '__tmp'
[5648, 5680) '__tmp'
[5712, 5744) '__tmp'
[5776, 5808) '__tmp'
[5840, 5872) '__tmp'
[5904, 5936) '__tmp'
[5968, 6000) '__tmp'
[6032, 6064) '__tmp'
[6096, 6128) '__tmp'
[6160, 6192) '__tmp'
[6224, 6256) '__tmp'
[6288, 6320) '__tmp'
[6352, 6384) '<unknown>'
[6416, 6448) '<unknown>'
[6480, 6512) '<unknown>'
[6544, 6576) '<unknown>'
[6608, 6640) '<unknown>'
[6672, 6704) '<unknown>'
[6736, 6768) '<unknown>'
[6800, 6832) '<unknown>'
[6864, 6896) '<unknown>'
[6928, 6960) '<unknown>'
[6992, 7024) '<unknown>'
[7056, 7088) '<unknown>'
[7120, 7168) 'sizeOfType' (line 3291)
[7200, 7248) 'pragmaOnce' (line 3382)
[7280, 7328) 'maybeUsedMacros' (line 3391)
[7360, 7416) 'macros' (line 3317)
[7456, 7512) 'ltime' (line 3341)
[7552, 7624) 'inc1' (line 3483)
[7664, 7736) 'inc2' (line 3488)
[7776, 7848) 'expr' (line 3576)
[7888, 7960) 'tokens' (line 3756)
[8000, 8080) 'ifstates' (line 3376)
[8112, 8192) 'iftokens' (line 3377)
[8224, 8304) 'includetokenstack' (line 3380)
[8336, 8520) 'macro' (line 3330)
[8592, 8776) '<unknown>'
[8848, 9032) '<unknown>'
[9104, 9288) '<unknown>'
[9360, 9544) '<unknown>'
[9616, 9800) '<unknown>'
[9872, 10056) '<unknown>'
[10128, 10312) '<unknown>'
[10384, 10568) '<unknown>'
[10640, 10824) '<unknown>'
[10896, 11088) '<unknown>'
[11152, 11344) '<unknown>'
[11408, 11600) '<unknown>'
[11664, 11856) '<unknown>'
[11920, 12112) '<unknown>'
[12176, 12368) '<unknown>'
[12432, 12624) '<unknown>'
[12688, 12720) '<unknown>'
[12752, 12784) '<unknown>'
[12816, 12848) '<unknown>'
[12880, 12912) '<unknown>'
[12944, 12976) 'macroname' (line 3323)
[13008, 13040) 'lhs' (line 3328)
[13072, 13104) 'rhs' (line 3329)
[13136, 13168) '<unknown>'
[13200, 13232) '<unknown>'
[13264, 13296) '<unknown>'
[13328, 13360) '<unknown>'
[13392, 13424) '<unknown>'
[13456, 13488) '<unknown>'
[13520, 13552) '<unknown>'
[13584, 13616) '<unknown>'
[13648, 13680) '<unknown>'
[13712, 13744) '<unknown>'
[13776, 13808) '<unknown>'
[13840, 13872) '<unknown>'
[13904, 13936) '<unknown>'
[13968, 14000) 'std_def' (line 3349)
[14032, 14064) '<unknown>'
[14096, 14128) '<unknown>'
[14160, 14192) '<unknown>'
[14224, 14256) 'std_def' (line 3366)
[14288, 14320) '<unknown>'
[14352, 14384) '<unknown>'
[14416, 14448) '<unknown>'
[14480, 14512) '<unknown>'
[14544, 14576) 'msg' (line 3426)
[14608, 14640) '<unknown>'
[14672, 14704) '<unknown>'
[14736, 14768) '<unknown>'
[14800, 14832) '<unknown>'
[14864, 14896) '<unknown>'
[14928, 14960) '<unknown>'
[14992, 15024) 'hdr' (line 3500)
[15056, 15088) '<unknown>'
[15120, 15152) 'header' (line 3527)
[15184, 15216) '<unknown>'
[15248, 15280) '<unknown>'
[15312, 15344) '<unknown>'
[15376, 15408) '<unknown>'
[15440, 15472) '<unknown>'
[15504, 15536) '<unknown>'
[15568, 15600) '<unknown>'
[15632, 15664) '<unknown>'
[15696, 15728) '<unknown>'
[15760, 15792) 'header' (line 3623)
[15824, 15856) '<unknown>'
[15888, 15920) 'header2' (line 3636)
[15952, 15984) '<unknown>'
[16016, 16048) '<unknown>'
[16080, 16112) '<unknown>'
[16144, 16176) '<unknown>'
[16208, 16240) 'E' (line 3670)
[16272, 16304) '<unknown>'
[16336, 16368) 'msg' (line 3682)
[16400, 16432) '<unknown>'
[16464, 16496) '<unknown>'
[16528, 16560) '<unknown>'
[16592, 16624) '<unknown>'
[16656, 16688) '<unknown>'
[16720, 16752) 's' (line 3764)
[16784, 16816) '<unknown>'
[16848, 16880) '<unknown>'
[16912, 16944) '<unknown>'
[16976, 17008) '<unknown>'
[17040, 17072) '<unknown>'
[17104, 17168) 'err' (line 3356)
[17200, 17264) 'err' (line 3413)
[17296, 17360) 'err' (line 3433)
[17392, 17456) 'err' (line 3461)
[17488, 17552) 'out' (line 3472)
[17584, 17648) 'err' (line 3513)
[17680, 17744) 'out' (line 3531)
[17776, 17840) 'out' (line 3540)
[17872, 17936) 'out' (line 3555)
[17968, 18032) 'out' (line 3601)
[18064, 18128) 'out' (line 3644)
[18160, 18224) 'out' (line 3685)
[18256, 18344) 'mu' (line 3785)
[18384, 18600) '<unknown>'
[18672, 18888) '<unknown>'
[18960, 19176) '<unknown>'
[19248, 19768) 'f' (line 3635)
[19904, 19913) 'buf' (line 3279)
[19936, 19948) 'buf' (line 3272)