首页 > 其他分享 >疑似std::regex_search正则匹配,导致堆栈错误

疑似std::regex_search正则匹配,导致堆栈错误

时间:2023-10-08 16:48:37浏览次数:36  
标签:std regex search Scan C++ BD view

  一个很奇怪的问题,当我_beginthreadex/CreateThread创建线程,使用std::regex_search匹配时,程序会崩溃,堆栈如下:

  

     ntdll.dll!RtlReportCriticalFailure()    未知
     ntdll.dll!RtlpHeapHandleError()    未知
     ntdll.dll!RtlpHpHeapHandleError()    未知
     ntdll.dll!RtlpLogHeapFailure()    未知
     ntdll.dll!RtlpFreeHeapInternal()    未知
     ntdll.dll!RtlFreeHeap()    未知
     ucrtbase.dll!_free_base()    未知
>    BD-Scan.exe!std::_Deallocate<16,0>(void * _Ptr, unsigned __int64 _Bytes) 行 255    C++
     BD-Scan.exe!std::allocator<unsigned int>::deallocate(unsigned int * const _Ptr, const unsigned __int64 _Count) 行 798    C++
     BD-Scan.exe!std::vector<unsigned int,std::allocator<unsigned int>>::_Tidy() 行 1754    C++
     BD-Scan.exe!std::vector<unsigned int,std::allocator<unsigned int>>::~vector<unsigned int,std::allocator<unsigned int>>() 行 704    C++
     BD-Scan.exe!std::_Vb_val<std::allocator<bool>>::~_Vb_val<std::allocator<bool>>() 行 2434    C++
     BD-Scan.exe!std::vector<bool,std::allocator<bool>>::~vector<bool,std::allocator<bool>>() 行 2620    C++
     BD-Scan.exe!std::_Bt_state_t<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>::~_Bt_state_t<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>()    C++
     BD-Scan.exe!std::_Tgt_state_t<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>::~_Tgt_state_t<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>>()    C++
     BD-Scan.exe!std::_Matcher<std::_String_view_iterator<std::char_traits<char>>,char,std::regex_traits<char>,std::_String_view_iterator<std::char_traits<char>>>::_Do_if(std::_Node_if * _Node) 行 3126    C++
     BD-Scan.exe!std::_Matcher<std::_String_view_iterator<std::char_traits<char>>,char,std::regex_traits<char>,std::_String_view_iterator<std::char_traits<char>>>::_Match_pat(std::_Node_base * _Nx) 行 3578    C++
     BD-Scan.exe!std::_Matcher<std::_String_view_iterator<std::char_traits<char>>,char,std::regex_traits<char>,std::_String_view_iterator<std::char_traits<char>>>::_Match<std::allocator<std::sub_match<std::_String_view_iterator<std::char_traits<char>>>>>(std::match_results<std::_String_view_iterator<std::char_traits<char>>,std::allocator<std::sub_match<std::_String_view_iterator<std::char_traits<char>>>>> * _Matches, bool _Full_match) 行 1599    C++
     BD-Scan.exe!std::_Matcher<std::_String_view_iterator<std::char_traits<char>>,char,std::regex_traits<char>,std::_String_view_iterator<std::char_traits<char>>>::_Match<std::allocator<std::sub_match<std::_String_view_iterator<std::char_traits<char>>>>>(std::_String_view_iterator<std::char_traits<char>> _Pfirst, std::match_results<std::_String_view_iterator<std::char_traits<char>>,std::allocator<std::sub_match<std::_String_view_iterator<std::char_traits<char>>>>> * _Matches, bool _Full_match) 行 1578    C++
     BD-Scan.exe!std::_Regex_search2<std::_String_view_iterator<std::char_traits<char>>,std::allocator<std::sub_match<std::_String_view_iterator<std::char_traits<char>>>>,char,std::regex_traits<char>,std::_String_view_iterator<std::char_traits<char>>>(std::_String_view_iterator<std::char_traits<char>> _First, std::_String_view_iterator<std::char_traits<char>> _Last, std::match_results<std::_String_view_iterator<std::char_traits<char>>,std::allocator<std::sub_match<std::_String_view_iterator<std::char_traits<char>>>>> * _Matches, const std::basic_regex<char,std::regex_traits<char>> & _Re, std::regex_constants::match_flag_type _Flgs, std::_String_view_iterator<std::char_traits<char>> _Org) 行 2218    C++
     BD-Scan.exe!std::regex_search<std::_String_view_iterator<std::char_traits<char>>,std::allocator<std::sub_match<std::_String_view_iterator<std::char_traits<char>>>>,char,std::regex_traits<char>>(std::_String_view_iterator<std::char_traits<char>> _First, std::_String_view_iterator<std::char_traits<char>> _Last, std::match_results<std::_String_view_iterator<std::char_traits<char>>,std::allocator<std::sub_match<std::_String_view_iterator<std::char_traits<char>>>>> & _Matches, const std::basic_regex<char,std::regex_traits<char>> & _Re, std::regex_constants::match_flag_type _Flgs) 行 2243    C++
     BD-Scan.exe!Scanner(_ONION_SCAN_OBJECT * pScanObject) 行 956    C++

  但是当我不在CreateThread创建的线程中匹配,在程序主线程去匹配,就不会出现这个问题,很纳闷,怀疑是std::regex_search匹配导致了线程堆栈问题,暂时记录一下

  最后改用boost库了,就没有这个问题了

  

            std::string_view  view((char*)pScanObject1->pFileMapAddress, (size_t)pScanObject1->ullFileMapSize);

using SVMatchResults = std::match_results< std::string_view::const_iterator >;
        SVMatchResults mm;
        if (std::regex_search(view.begin(), view.end(), mm, re)) 
        {
            std::cout << "matches!\n";
            //return 0;
        
        }

 

  

标签:std,regex,search,Scan,C++,BD,view
From: https://www.cnblogs.com/lsh123/p/17749534.html

相关文章

  • Easysearch 压缩功能的显著提升:从 8.7GB 到 1.4GB
    引言在海量数据的存储和处理中,索引膨胀率是一个不可忽视的关键指标。它直接影响了存储成本和查询性能。近期,Easysearch在这方面取得了显著的进展,其压缩功能的效果远超过了之前的版本。本文将详细介绍这一进展。Easysearch各版本压缩性能对比根据之前文章的数据,Easysearchv1.......
  • std::vector::sort
    std::sort(vector.begin(),vector.end(),[](inta,intb){if(a==1)returnfalse;//a为1就将这个1排在最后,因为返回的是falseif(b==1)returntrue;//还是将1排在最后returna>b;//降序排序,默认为升序排序})sort(起始迭代器,终止迭代器,排序规则);......
  • ElasticSearch8.10.2接入SpringBoot3.+
    pom.xml文件引入依赖 <!--https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-client--> <dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> &l......
  • search_url_get_msg.py
      #!/usr/bin/envpython3importosimportloggingimportglobimportsysimportrefromlogging.handlersimportRotatingFileHandlerfrommultiprocessingimportProcessfrommultiprocessingimportcpu_countimportmultiprocessingdefsearch_url_message(......
  • docker-compose deploy 高可用 elasticsearch TLS
    文章目录1.sysctl2.swap3.hosts4.配置instances.yaml5.创建证书6.部署7.修改kibanna密码8.清理1.sysctl[root@githubes_tls]#cat/etc/sysctl.conf#sysctlsettingsaredefinedthroughfilesin#/usr/lib/sysctl.d/,/run/sysctl.d/,and/etc/sysctl.d/.##......
  • 安装ElasticSearch_基于Docker
    注意版本,我最开始尝试比较新的版本,启动容器都发生了失败,将至7.8.0版本就启动成功了拉取Docker镜像dockerpulldocker.elastic.co/elasticsearch/elasticsearch:7.8.0//ElasticSearch镜像dockerpulldocker.elastic.co/kibana/kibana:7.8.0//kibana镜像准备docker-comp......
  • 了解基于 Elasticsearch 的站内搜索,及其替代方案
    对于一家公司而言,数据量越来越多,如果快速去查找这些信息是一个很难的问题,在计算机领域有一个专门的领域IR(Information Retrival)研究如何获取信息,做信息检索。在国内的如百度这样的搜索引擎也属于这个领域,要自己实现一个搜索引擎是非常难的,不过通过ElasticSearch就可以构建自己的站......
  • "Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/n
    docker-compose搭建elasticsearch出现问题例子如下version:'3'services:elasticsearch:image:elasticsearch:7.14.0container_name:elasticsearchenvironment:-"discovery.type=single-node"-"xpack.sec......
  • ElasticSearch系列-索引原理与数据读写流程
    索引原理倒排索引倒排索引(InvertedIndex)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。ES底层在检索时底层使用的就是倒排索引。索引模型现有索引和映射如下:{"products":{"mappings":{"proper......
  • 以下是一个复杂的 C 语言代码示例,展示了如何使用递归函数来计算斐波那契数列: ```c #i
    以下是一个复杂的C语言代码示例,展示了如何使用递归函数来计算斐波那契数列:#include<stdio.h>//递归函数计算斐波那契数列intfibonacci(intn){if(n<=1){returnn;}returnfibonacci(n-1)+fibonacci(n-2);}intmain(){intnum;......