Hi all,
My understanding for the following sentences: "Introduce the "fat runtime" build. This will build several variants of the Hyperscan scanning engine specialised for different processor feature sets, and use the appropriate one for the host at runtime. This uses the "ifunc" indirect function attribute provided by GCC and is currently available on Linux only, where it is the default for release builds."
we don't need to specify the processor arch, it can run on all different processor, so I built the hyperscan library without specify the March on this host with cpuinfo:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm avx2
but when it is run on cpu info with following information, it crashed
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer rdrand lahf_lm 3dnowprefetch arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
Please help to take a look at and give some tips.
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/...
Reading symbols from /root/contentscan...done.
[New LWP 21986]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./contentscan -f /usr/local/holonet/contentscan/config.json -n 1'.
Program terminated with signal 4, Illegal instruction.
#0 0x00007fa3dd531303 in ue2::shortcutLiteral (ng=..., expr=...) at /home/tidy/work/AIE/hyperscan/hyperscan/src/parser/shortcut_literal.cpp:180
180 /home/tidy/work/AIE/hyperscan/hyperscan/src/parser/shortcut_literal.cpp: No such file or directory.
Missing separate debuginfos, use: debuginfo-install glibc-2.17-105.el7.x86_64 glibc-2.17-157.el7_3.1.x86_64 libgcc-4.8.5-11.el7.x86_64 libgcc-4.8.5-4.el7.x86_64 libstdc++-4.8.5-11.el7.x86_64 libstdc++-4.8.5-4.el7.x86_64
(gdb) bt full
#0 0x00007fa3dd531303 in ue2::shortcutLiteral (ng=..., expr=...) at /home/tidy/work/AIE/hyperscan/hyperscan/src/parser/shortcut_literal.cpp:180
PRETTY_FUNCTION = "bool ue2::shortcutLiteral(ue2::NG&, const ue2::ParsedExpression&)"
vis = {ue2::ConstComponentVisitor = {_vptr.ConstComponentVisitor = 0x7fa3ddca8330 <vtable for ue2::ConstructLiteralVisitor+16>}, lit = {s = "",
nocase = std::vector of length 0, capacity 0}, repeat_stack = std::stack wrapping: std::deque with 0 elements}
lit =
#1 0x00007fa3dd33975d in ue2::addExpression (ng=..., index=index@entry=0, expression=0x2a5c358 "\b\d{3}[-|\s]?\d{2}[-|\s]?\d{4}\b", flags=12, ext=0x0,
id=) at /home/tidy/work/AIE/hyperscan/hyperscan/src/compiler/compiler.cpp:272
PRETTY_FUNCTION = "void ue2::addExpression(ue2::NG&, unsigned int, const char*, unsigned int, const hs_expr_ext*, ReportID)"
cc = @0x7ffe878a8e60: {streaming = false, vectored = false, target_info = {tune = 4, cpu_features = 0}, grey = {optimiseComponentTree = true,
performGraphSimplification = true, prefilterReductions = true, removeEdgeRedundancy = true, allowGough = true, allowHaigLit = true, allowLitHaig = true,
allowLbr = true, allowMcClellan = true, allowSheng = true, allowMcSheng = true, allowPuff = true, allowLiteral = true, allowRose = true, allowViolet = true,
allowExtendedNFA = true, allowLimExNFA = true, allowAnchoredAcyclic = true, allowSmallLiteralSet = true, allowCastle = true, allowDecoratedLiteral = true,
allowNoodle = true, fdrAllowTeddy = true, violetAvoidSuffixes = 1, violetAvoidWeakInfixes = true, violetDoubleCut = true, violetExtractStrongLiterals = true,
violetLiteralChains = true, violetDoubleCutLiteralLen = 3, violetEarlyCleanLiteralLen = 6, puffImproveHead = true, castleExclusive = true, mergeSEP = true,
mergeRose = true, mergeSuffixes = true, mergeOutfixes = true, onlyOneOutfix = false, allowShermanStates = true, allowMcClellan8 = true, highlanderPruneDFA = true,
minimizeDFA = true, accelerateDFA = true, accelerateNFA = true, reverseAccelerate = true, squashNFA = true, compressNFAState = true, numberNFAStatesWrong = false,
highlanderSquash = true, allowZombies = true, floodAsPuffette = false, nfaForceSize = 0, maxHistoryAvailable = 110, minHistoryAvailable = 0, maxAnchoredRegion = 63,
minRoseLiteralLength = 3, minRoseNetflowLiteralLength = 2, maxRoseNetflowEdges = 50000, minExtBoundedRepeatSize = 32, goughCopyPropagate = true,
goughRegisterAllocate = true, shortcutLiterals = true, roseGraphReduction = true, roseRoleAliasing = true, roseMasks = true, roseMaxBadLeafLength = 5,
roseConvertInfBadLeaves = true, roseConvertFloodProneSuffixes = true, roseMergeRosesDuringAliasing = true, roseMultiTopRoses = true, roseHamsterMasks = true,
roseLookaroundMasks = true, roseMcClellanPrefix = 1, roseMcClellanSuffix = 1, roseMcClellanOutfix = 2, roseTransformDelay = true, roseDesiredSplit = 4,
earlyMcClellanPrefix = true, earlyMcClellanInfix = true, earlyMcClellanSuffix = true, allowCountingMiracles = true, allowSomChain = true, somMaxRevNfaLength = 126,
hamsterAccelForward = true, hamsterAccelReverse = false, miracleHistoryBonus = 16, equivalenceEnable = true, allowSmallWrite = true, allowSmallWriteSheng = false,
smallWriteLargestBuffer = 70, smallWriteLargestBufferBad = 35, limitSmallWriteOutfixSize = 1048576, smallWriteMaxPatterns = 10000, smallWriteMaxLiterals = 10000,
allowTamarama = true, tamaChunkSize = 100, dumpFlags = 0, dumpPath = "", limitPatternCount = 8000000, limitPatternLength = 16000, limitGraphVertices = 500000,
limitGraphEdges = 1000000, limitReportCount = 32000000, limitLiteralCount = 8000000, limitLiteralLength = 16000, limitLiteralMatcherChars = 1073741824,
limitLiteralMatcherSize = 1073741824, limitRoseRoleCount = 32000000, limitRoseEngineCount = 8000000, limitRoseAnchoredSize = 1073741824,
limitEngineSize = 1073741824, limitDFASize = 1073741824, limitNFASize = 1048576, limitLBRSize = 1048576}}
expr = {boost::noncopyable_::noncopyable = {}, utf8 = false, component = std::unique_ptrue2::Component containing 0x2a5c500, allow_vacuous = false,
highlander = true, prefilter = false, som = SOM_NONE, index = 0, id = 1025024, min_offset = 0, max_offset = 18446744073709551615, min_length = 0}
g = std::unique_ptrue2::NGWrapper containing 0x7ffe878a8a70
#2 0x00007fa3dd33420d in ue2::hs_compile_multi_int (expressions=expressions@entry=0x2a9c000, flags=flags@entry=0x2a5e280, ids=ids@entry=0x2a5e100, ext=ext@entry=0x0,
elements=elements@entry=20, mode=mode@entry=1, platform=platform@entry=0x0, db=db@entry=0x7ffe878a9270, comp_error=comp_error@entry=0x7ffe878a9278, g=...)
at /home/tidy/work/AIE/hyperscan/hyperscan/src/hs.cpp:237
i = 0
length = 3707816374
out =
PRETTY_FUNCTION = "hs_error_t ue2::hs_compile_multi_int(const char* const*, const unsigned int*, const unsigned int*, const hs_expr_ext* const*, unsigned int, unsigned int, const hs_platform_info_t*, hs_database_t**, hs"...
isVectored = false
cc = {streaming = false, vectored = false, target_info = {tune = 4, cpu_features = 0}, grey = {optimiseComponentTree = true, performGraphSimplification = true,
prefilterReductions = true, removeEdgeRedundancy = true, allowGough = true, allowHaigLit = true, allowLitHaig = true, allowLbr = true, allowMcClellan = true,
allowSheng = true, allowMcSheng = true, allowPuff = true, allowLiteral = true, allowRose = true, allowViolet = true, allowExtendedNFA = true, allowLimExNFA = true,
allowAnchoredAcyclic = true, allowSmallLiteralSet = true, allowCastle = true, allowDecoratedLiteral = true, allowNoodle = true, fdrAllowTeddy = true,
violetAvoidSuffixes = 1, violetAvoidWeakInfixes = true, violetDoubleCut = true, violetExtractStrongLiterals = true, violetLiteralChains = true,
violetDoubleCutLiteralLen = 3, violetEarlyCleanLiteralLen = 6, puffImproveHead = true, castleExclusive = true, mergeSEP = true, mergeRose = true,
mergeSuffixes = true, mergeOutfixes = true, onlyOneOutfix = false, allowShermanStates = true, allowMcClellan8 = true, highlanderPruneDFA = true, minimizeDFA = true,
accelerateDFA = true, accelerateNFA = true, reverseAccelerate = true, squashNFA = true, compressNFAState = true, numberNFAStatesWrong = false,
highlanderSquash = true, allowZombies = true, floodAsPuffette = false, nfaForceSize = 0, maxHistoryAvailable = 110, minHistoryAvailable = 0, maxAnchoredRegion = 63,
minRoseLiteralLength = 3, minRoseNetflowLiteralLength = 2, maxRoseNetflowEdges = 50000, minExtBoundedRepeatSize = 32, goughCopyPropagate = true,
---Type to continue, or q to quit---
goughRegisterAllocate = true, shortcutLiterals = true, roseGraphReduction = true, roseRoleAliasing = true, roseMasks = true, roseMaxBadLeafLength = 5,
roseConvertInfBadLeaves = true, roseConvertFloodProneSuffixes = true, roseMergeRosesDuringAliasing = true, roseMultiTopRoses = true, roseHamsterMasks = true,
roseLookaroundMasks = true, roseMcClellanPrefix = 1, roseMcClellanSuffix = 1, roseMcClellanOutfix = 2, roseTransformDelay = true, roseDesiredSplit = 4,
earlyMcClellanPrefix = true, earlyMcClellanInfix = true, earlyMcClellanSuffix = true, allowCountingMiracles = true, allowSomChain = true, somMaxRevNfaLength = 126,
hamsterAccelForward = true, hamsterAccelReverse = false, miracleHistoryBonus = 16, equivalenceEnable = true, allowSmallWrite = true, allowSmallWriteSheng = false,
smallWriteLargestBuffer = 70, smallWriteLargestBufferBad = 35, limitSmallWriteOutfixSize = 1048576, smallWriteMaxPatterns = 10000, smallWriteMaxLiterals = 10000,
allowTamarama = true, tamaChunkSize = 100, dumpFlags = 0, dumpPath = "", limitPatternCount = 8000000, limitPatternLength = 16000, limitGraphVertices = 500000,
limitGraphEdges = 1000000, limitReportCount = 32000000, limitLiteralCount = 8000000, limitLiteralLength = 16000, limitLiteralMatcherChars = 1073741824,
limitLiteralMatcherSize = 1073741824, limitRoseRoleCount = 32000000, limitRoseEngineCount = 8000000, limitRoseAnchoredSize = 1073741824,
limitEngineSize = 1073741824, limitDFASize = 1073741824, limitNFASize = 1048576, limitLBRSize = 1048576}}
isStreaming =
target_info = {tune = 4, cpu_features = 0}
ng = {boost::noncopyable_::noncopyable = {}, maxSomRevHistoryAvailable = 126, minWidth = {static val_infinity = 2147483647,
static val_unreachable = 2147483648, val = 2147483647}, rm = {boost::noncopyable_::noncopyable = {}, grey = @0x7ffe878a8b38,
reportIds = std::vector of length 0, capacity 0, reportIdToInternalMap = std::map with 0 elements, reportIdToDedupeKey = std::map with 0 elements,
reportIdToProgramOffset = std::map with 0 elements, externalIdMap = std::map with 0 elements, toExhaustibleKeyMap = std::map with 0 elements, freeEIndex = 0,
global_exhaust = true}, ssm = {boost::noncopyable_::noncopyable = {}, static NO_PARENT = 4294967295, nextSomSlot = 0, cache =
std::unique_ptrue2::SlotCache containing 0x2a5e180, rev_nfas = std::deque with 0 elements, historyRequired = 0, precision = 0},
boundary = {boost::noncopyable_::noncopyable = {}, report_at_0 = std::set with 0 elements, report_at_0_eod = std::set with 0 elements,
report_at_eod = std::set with 0 elements}, cc = {streaming = false, vectored = false, target_info = {tune = 4, cpu_features = 0}, grey = {
optimiseComponentTree = true, performGraphSimplification = true, prefilterReductions = true, removeEdgeRedundancy = true, allowGough = true, allowHaigLit = true,
allowLitHaig = true, allowLbr = true, allowMcClellan = true, allowSheng = true, allowMcSheng = true, allowPuff = true, allowLiteral = true, allowRose = true,
allowViolet = true, allowExtendedNFA = true, allowLimExNFA = true, allowAnchoredAcyclic = true, allowSmallLiteralSet = true, allowCastle = true,
allowDecoratedLiteral = true, allowNoodle = true, fdrAllowTeddy = true, violetAvoidSuffixes = 1, violetAvoidWeakInfixes = true, violetDoubleCut = true,
violetExtractStrongLiterals = true, violetLiteralChains = true, violetDoubleCutLiteralLen = 3, violetEarlyCleanLiteralLen = 6, puffImproveHead = true,
castleExclusive = true, mergeSEP = true, mergeRose = true, mergeSuffixes = true, mergeOutfixes = true, onlyOneOutfix = false, allowShermanStates = true,
allowMcClellan8 = true, highlanderPruneDFA = true, minimizeDFA = true, accelerateDFA = true, accelerateNFA = true, reverseAccelerate = true, squashNFA = true,
compressNFAState = true, numberNFAStatesWrong = false, highlanderSquash = true, allowZombies = true, floodAsPuffette = false, nfaForceSize = 0,
maxHistoryAvailable = 110, minHistoryAvailable = 0, maxAnchoredRegion = 63, minRoseLiteralLength = 3, minRoseNetflowLiteralLength = 2,
maxRoseNetflowEdges = 50000, minExtBoundedRepeatSize = 32, goughCopyPropagate = true, goughRegisterAllocate = true, shortcutLiterals = true,
roseGraphReduction = true, roseRoleAliasing = true, roseMasks = true, roseMaxBadLeafLength = 5, roseConvertInfBadLeaves = true,
roseConvertFloodProneSuffixes = true, roseMergeRosesDuringAliasing = true, roseMultiTopRoses = true, roseHamsterMasks = true, roseLookaroundMasks = true,
roseMcClellanPrefix = 1, roseMcClellanSuffix = 1, roseMcClellanOutfix = 2, roseTransformDelay = true, roseDesiredSplit = 4, earlyMcClellanPrefix = true,
earlyMcClellanInfix = true, earlyMcClellanSuffix = true, allowCountingMiracles = true, allowSomChain = true, somMaxRevNfaLength = 126, hamsterAccelForward = true,
hamsterAccelReverse = false, miracleHistoryBonus = 16, equivalenceEnable = true, allowSmallWrite = true, allowSmallWriteSheng = false,
smallWriteLargestBuffer = 70, smallWriteLargestBufferBad = 35, limitSmallWriteOutfixSize = 1048576, smallWriteMaxPatterns = 10000, smallWriteMaxLiterals = 10000,
allowTamarama = true, tamaChunkSize = 100, dumpFlags = 0, dumpPath = "", limitPatternCount = 8000000, limitPatternLength = 16000, limitGraphVertices = 500000,
limitGraphEdges = 1000000, limitReportCount = 32000000, limitLiteralCount = 8000000, limitLiteralLength = 16000, limitLiteralMatcherChars = 1073741824,
limitLiteralMatcherSize = 1073741824, limitRoseRoleCount = 32000000, limitRoseEngineCount = 8000000, limitRoseAnchoredSize = 1073741824,
limitEngineSize = 1073741824, limitDFASize = 1073741824, limitNFASize = 1048576, limitLBRSize = 1048576}}, smwr =
std::unique_ptr<ue2::SmallWriteBuild> containing 0x2a5c480, rose = std::unique_ptr<ue2::RoseBuild> containing 0x2aa0000}
#3 0x00007fa3dd334acc in hs_compile_multi (expressions=0x2a9c000, flags=0x2a5e280, ids=0x2a5e100, elements=20, mode=1, platform=0x0, db=0x7ffe878a9270, error=0x7ffe878a9278)
at /home/tidy/work/AIE/hyperscan/hyperscan/src/hs.cpp:305