<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.ghprb.GhprbCause'><shortDescription>GitHub pull request #3700 of commit c8ed45454745f27c663dd111735054cde5dd4de9, no merge conflicts.</shortDescription></cause></action><action _class='org.jenkinsci.plugins.ghprb.GhprbParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>sha1</name><value>origin/pr/3700/merge</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbActualCommit</name><value>c8ed45454745f27c663dd111735054cde5dd4de9</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbActualCommitAuthor</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbActualCommitAuthorEmail</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbAuthorRepoGitUrl</name><value>https://github.com/eduardo-elizondo/bcc.git</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbTriggerAuthor</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbTriggerAuthorEmail</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbTriggerAuthorLogin</name><value>yonghong-song</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbTriggerAuthorLoginMention</name><value>@yonghong-song</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbPullId</name><value>3700</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbTargetBranch</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbSourceBranch</name><value>add_strict_weak_ordering</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GIT_BRANCH</name><value>add_strict_weak_ordering</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbPullAuthorEmail</name><value>eduardo.elizondorueda@gmail.com</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbPullAuthorLogin</name><value>eduardo-elizondo</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbPullAuthorLoginMention</name><value>@eduardo-elizondo</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbPullDescription</name><value>GitHub pull request #3700 of commit c8ed45454745f27c663dd111735054cde5dd4de9, no merge conflicts.</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbPullTitle</name><value>Guarantee strict weak order in Probe::finalize_locations</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbPullLink</name><value>https://github.com/iovisor/bcc/pull/3700</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbPullLongDescription</name><value>Currently, `Probe::finalize_locations` uses `std::sort` on its `locations_` via a custom defined lambda. The provided lambda though, does not guarantee [strict weak ordering](https://en.cppreference.com/w/cpp/concepts/strict_weak_order), and thus, violates one of the [requirements of the compare function](https://en.cppreference.com/w/cpp/named_req/Compare).\r\n\r\nThe comparison function `a.bin_path_ &lt; b.bin_path_ || a.address_ &lt; b.address_` fails the guarantee that `If comp(a,b)==true then comp(b,a)==false`. Quick example, let `a = (\"a\", 3)` and `b = (\"b\", 1)`. In this case, both `comp(a,b)==true and comp(b,a)==true`. Code sample: https://godbolt.org/z/vWbcazTvj\r\n\r\nIn practice, this undefined behavior might lead to weird behavior such as random segmentation faults which I managed to hit in some of my production binaries. i.e:\r\n```\r\n*** Signal 11 (SIGSEGV) received by PID X (code: -6), stack trace: ***\r\n    @ (unknown)\r\n    @ __memcmp_avx2_movbe\r\n    @ void std::__unguarded_linear_insert&lt;__gnu_cxx::__normal_iterator&lt;USDT::Location*, std::vector&lt;USDT::Location, std::allocator&lt;USDT::Location&gt; &gt; &gt;, __gnu_cxx::__ops::_Val_comp_iter&lt;USDT::Probe::finalize_locations()::{lambda(USDT::Location const&amp;, USDT::Location const&amp;)#1}&gt; &gt;(__gnu_cxx::__normal_iterator&lt;USDT::Location*, std::vector&lt;USDT::Location, std::allocator&lt;USDT::Location&gt; &gt; &gt;, __gnu_cxx::__ops::_Val_comp_iter&lt;USDT::Probe::finalize_locations()::{lambda(USDT::Location const&amp;, USDT::Location const&amp;)#1}&gt;)\r\n    @ USDT::Probe::finalize_locations()\r\n     ... user code ...\r\n```\r\n\r\nTo solve this, we just need to guarantee the strict weak order through the use of `std::tie`. This allows it to have a lexicographical comparison and hence, no more undefined behavior. Performance-wise, this just creates a tuple in place with no copies, so it shouldn't be a big regression.</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbCommentBody</name><value>[buildbot, test this please]</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbGhRepository</name><value>iovisor/bcc</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>ghprbCredentialsId</name><value>6d3daf13-69b8-48b1-9c8f-ec5353264113</value></parameter></action><action></action><action _class='jenkins.model.InterruptedBuildAction'></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><description>&lt;a title="Guarantee strict weak order in Probe::finalize_locations" href="https://github.com/iovisor/bcc/pull/3700"&gt;PR #3700&lt;/a&gt;: Guarantee strict weak order...</description><displayName>#1222</displayName><duration>1156863</duration><estimatedDuration>7460664</estimatedDuration><fullDisplayName>bcc-pr #1222</fullDisplayName><id>1222</id><keepLog>false</keepLog><number>1222</number><queueId>9768</queueId><result>ABORTED</result><timestamp>1636996045032</timestamp><url>https://buildbot.iovisor.org/jenkins/user/danobi/my-views/view/all/job/bcc-pr/1222/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><run><number>1210</number><url>https://buildbot.iovisor.org/jenkins/user/danobi/my-views/view/all/job/bcc-pr/label=fc25/1210/</url></run><run><number>1210</number><url>https://buildbot.iovisor.org/jenkins/user/danobi/my-views/view/all/job/bcc-pr/label=fc26/1210/</url></run><run><number>1210</number><url>https://buildbot.iovisor.org/jenkins/user/danobi/my-views/view/all/job/bcc-pr/label=fc27/1210/</url></run><run><number>1210</number><url>https://buildbot.iovisor.org/jenkins/user/danobi/my-views/view/all/job/bcc-pr/label=fc28/1210/</url></run><run><number>1210</number><url>https://buildbot.iovisor.org/jenkins/user/danobi/my-views/view/all/job/bcc-pr/label=ubuntu1604/1210/</url></run><run><number>1210</number><url>https://buildbot.iovisor.org/jenkins/user/danobi/my-views/view/all/job/bcc-pr/label=ubuntu1710/1210/</url></run><run><number>1210</number><url>https://buildbot.iovisor.org/jenkins/user/danobi/my-views/view/all/job/bcc-pr/label=ubuntu1804/1210/</url></run></matrixBuild>