<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>170875</bug_id>
          
          <creation_ts>2017-04-15 08:26:25 -0700</creation_ts>
          <short_desc>Cannot compile JavaScriptCore/runtime/VMTraps.cpp on FreeBSD because std::pair has a non-trivial copy constructor</short_desc>
          <delta_ts>2017-04-19 11:25:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ting-Wei Lan">lantw44</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fujii</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1297669</commentid>
    <comment_count>0</comment_count>
    <who name="Ting-Wei Lan">lantw44</who>
    <bug_when>2017-04-15 08:26:25 -0700</bug_when>
    <thetext>In JavaScriptCore/runtime/VMTraps.cpp, function findActiveVMAndStackBounds returns a WTF::Expected&lt;std::pair&lt;JSC::VM*, WTF::StackBounds&gt;, JSC::VMTraps::Error&gt;. The parent class of this type is WTF::ExpectedDetail::ConstexprBase&lt;std::pair&lt;JSC::VM*, WTF::StackBounds&gt;, JSC::VMTraps::Error&gt;.

WTF::ExpectedDetail::ConstexprBase doesn&apos;t have a user-defined copy constructor, and its implicitly-defined copy constructor is deleted because the default std::pair implementation on FreeBSD has a non-trivial copy constructor. /usr/include/c++/v1/__config says _LIBCPP_TRIVIAL_PAIR_COPY_CTOR is disabled in order to keep ABI compatibility: https://svnweb.freebsd.org/changeset/base/261801.


Error messages showed by the compiler (clang 3.8):

/path/to/WebKit/Source/JavaScriptCore/runtime/VMTraps.cpp:96:9: error: returning object of type &apos;Expected&lt;std::pair&lt;VM *, StackBounds&gt;, VMTraps::Error&gt;&apos; invokes deleted constructor
        return makeUnexpected(VMTraps::Error::LockUnavailable);
        ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../Source/WTF/wtf/Expected.h:262:5: note: explicitly defaulted function was implicitly deleted here
    Expected(const Expected&amp;) = default;
    ^
../../Source/WTF/wtf/Expected.h:248:18: note: copy constructor of &apos;Expected&lt;std::__1::pair&lt;JSC::VM *, WTF::StackBounds&gt;, JSC::VMTraps::Error&gt;&apos; is implicitly deleted because base class &apos;ExpectedDetail::BaseSelect&lt;pair&lt;VM *, StackBounds&gt;, Error&gt;&apos; (aka &apos;WTF::ExpectedDetail::ConstexprBase&lt;std::__1::pair&lt;JSC::VM *, WTF::StackBounds&gt;, JSC::VMTraps::Error&gt;&apos;) has a deleted copy constructor
class Expected : private ExpectedDetail::BaseSelect&lt;T, E&gt; {
                 ^
../../Source/WTF/wtf/Expected.h:145:44: note: copy constructor of &apos;ConstexprBase&lt;std::__1::pair&lt;JSC::VM *, WTF::StackBounds&gt;, JSC::VMTraps::Error&gt;&apos; is implicitly deleted because field &apos;s&apos; has a deleted copy constructor
    ConstexprStorage&lt;ValueType, ErrorType&gt; s;
                                           ^
../../Source/WTF/wtf/Expected.h:87:15: note: copy constructor of &apos;ConstexprStorage&lt;std::__1::pair&lt;JSC::VM *, WTF::StackBounds&gt;, JSC::VMTraps::Error&gt;&apos; is implicitly deleted because variant field &apos;val&apos; has a non-trivial copy constructor
    ValueType val;
              ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298636</commentid>
    <comment_count>1</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-19 01:25:59 -0700</bug_when>
    <thetext>It is surprising to see the constexpr version being instantiated here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298680</commentid>
    <comment_count>2</comment_count>
    <who name="Ting-Wei Lan">lantw44</who>
    <bug_when>2017-04-19 08:27:47 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #1)
&gt; It is surprising to see the constexpr version being instantiated here.

JSC::VM*, WTF::StackBounds, JSC::VMTraps::Error are all trivially destructible, so WTF::ExpectedDetail::BaseSelect is WTF::ExpectedDetail::ConstexprBase here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298709</commentid>
    <comment_count>3</comment_count>
      <attachid>307486</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-19 09:54:47 -0700</bug_when>
    <thetext>Created attachment 307486
patch

(In reply to Ting-Wei Lan from comment #2)
&gt; (In reply to JF Bastien from comment #1)
&gt; &gt; It is surprising to see the constexpr version being instantiated here.
&gt; 
&gt; JSC::VM*, WTF::StackBounds, JSC::VMTraps::Error are all trivially
&gt; destructible, so WTF::ExpectedDetail::BaseSelect is
&gt; WTF::ExpectedDetail::ConstexprBase here.

Derp, right you are!

Here&apos;s a patch that works around the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298712</commentid>
    <comment_count>4</comment_count>
      <attachid>307486</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-19 09:56:53 -0700</bug_when>
    <thetext>Comment on attachment 307486
patch

r=me if EWS bots build and are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298728</commentid>
    <comment_count>5</comment_count>
      <attachid>307486</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-19 10:40:40 -0700</bug_when>
    <thetext>Comment on attachment 307486
patch

Tests are broken for unrelated reason. Fetch or somesuch.

cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298745</commentid>
    <comment_count>6</comment_count>
      <attachid>307486</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-19 11:25:46 -0700</bug_when>
    <thetext>Comment on attachment 307486
patch

Clearing flags on attachment: 307486

Committed r215522: &lt;http://trac.webkit.org/changeset/215522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298746</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-19 11:25:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307486</attachid>
            <date>2017-04-19 09:54:47 -0700</date>
            <delta_ts>2017-04-19 11:25:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-expected-pair.patch</filename>
            <type>text/plain</type>
            <size>3973</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA1ZjM4ZjdiOTM1NjI0ODcyMmEwZTg3NTRkOTk1NDMyYWJkZWI0YTYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDE5IEFwciAyMDE3IDA5OjU0OjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gZXhwZWN0
ZWQtcGFpcgoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICB8
IDI0ICsrKysrKysrKysrKysrKysrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1UcmFwcy5jcHAgfCAxNSArKysrKysrKysrLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMzQg
aW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCBmNDZhY2YzLi5kMDcxOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAxNy0wNC0xOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ2Fubm90IGNvbXBpbGUgSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcCBv
biBGcmVlQlNEIGJlY2F1c2Ugc3RkOjpwYWlyIGhhcyBhIG5vbi10cml2aWFsIGNvcHkgY29uc3Ry
dWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdU
Rjo6RXhwZWN0ZWREZXRhaWw6OkNvbnN0ZXhwckJhc2UgZG9lc24ndCBoYXZlIGEgdXNlci1kZWZp
bmVkCisgICAgICAgIGNvcHkgY29uc3RydWN0b3IsIGFuZCBpdHMgaW1wbGljaXRseS1kZWZpbmVk
IGNvcHkgY29uc3RydWN0b3IgaXMKKyAgICAgICAgZGVsZXRlZCBiZWNhdXNlIHRoZSBkZWZhdWx0
IHN0ZDo6cGFpciBpbXBsZW1lbnRhdGlvbiBvbiBGcmVlQlNECisgICAgICAgIGhhcyBhIG5vbi10
cml2aWFsIGNvcHkgY29uc3RydWN0b3IuIC91c3IvaW5jbHVkZS9jKysvdjEvX19jb25maWcKKyAg
ICAgICAgc2F5cyBfTElCQ1BQX1RSSVZJQUxfUEFJUl9DT1BZX0NUT1IgaXMgZGlzYWJsZWQgaW4g
b3JkZXIgdG8ga2VlcAorICAgICAgICBBQkkgY29tcGF0aWJpbGl0eToKKyAgICAgICAgaHR0cHM6
Ly9zdm53ZWIuZnJlZWJzZC5vcmcvY2hhbmdlc2V0L2Jhc2UvMjYxODAxLgorCisgICAgICAgIFRo
YXQncyBhIGh1Z2UgYnVtbWVyLCBhbmQgSSdtIG5vdCBhIGZhbiBvZiBicm9rZW4gc3RkbGlicywg
YnV0IGluCisgICAgICAgIHRoaXMgY2FzZSBpdCdzIHByZXR0eSBuaWNlIHRvIGhhdmUgYSBjdXN0
b20gbmFtZWQgdHlwZSBhbnl3YXlzIGFuZAorICAgICAgICBjb3N0cyBub3RoaW5nLgorCisgICAg
ICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEFjdGl2ZVZNQW5k
U3RhY2tCb3VuZHMpOgorICAgICAgICAoSlNDOjpoYW5kbGVTaWd1c3IxKToKKyAgICAgICAgKEpT
Qzo6aGFuZGxlU2lndHJhcCk6CisKIDIwMTctMDQtMTggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIHIyMTE2NzAgYnJva2UgZG91YmxlIHRvIGludCBjb252ZXJzaW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAppbmRleCAxMTYzZmZi
Li5lNjI4NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRy
YXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcApA
QCAtODgsNyArODgsMTIgQEAgaW5saW5lIHN0YXRpYyBib29sIHZtSXNJbmFjdGl2ZShWTSYgdm0p
CiAgICAgcmV0dXJuICF2bS5lbnRyeVNjb3BlICYmICF2bS5vd25lclRocmVhZCgpOwogfQogCi1z
dGF0aWMgRXhwZWN0ZWQ8c3RkOjpwYWlyPFZNKiwgU3RhY2tCb3VuZHM+LCBWTVRyYXBzOjpFcnJv
cj4gZmluZEFjdGl2ZVZNQW5kU3RhY2tCb3VuZHMoU2lnbmFsQ29udGV4dCYgY29udGV4dCkKK3N0
cnVjdCBWTUFuZFN0YWNrQm91bmRzIHsKKyAgICBWTSogdm07CisgICAgU3RhY2tCb3VuZHMgc3Rh
Y2tCb3VuZHM7Cit9OworCitzdGF0aWMgRXhwZWN0ZWQ8Vk1BbmRTdGFja0JvdW5kcywgVk1UcmFw
czo6RXJyb3I+IGZpbmRBY3RpdmVWTUFuZFN0YWNrQm91bmRzKFNpZ25hbENvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgVk1JbnNwZWN0b3ImIGluc3BlY3RvciA9IFZNSW5zcGVjdG9yOjppbnN0YW5j
ZSgpOwogICAgIGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2soaW5zcGVjdG9yLmdldExvY2soKSk7
CkBAIC0xMjQsNyArMTI5LDcgQEAgc3RhdGljIEV4cGVjdGVkPHN0ZDo6cGFpcjxWTSosIFN0YWNr
Qm91bmRzPiwgVk1UcmFwczo6RXJyb3I+IGZpbmRBY3RpdmVWTUFuZFN0YWMKIAogICAgIGlmICgh
YWN0aXZlVk0gJiYgdW5hYmxlVG9BY3F1aXJlTWFjaGluZVRocmVhZHNMb2NrKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoVk1UcmFwczo6RXJyb3I6OkxvY2tVbmF2YWlsYWJsZSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGFjdGl2ZVZNLCBzdGFja0JvdW5kcyk7CisgICAgcmV0
dXJuIFZNQW5kU3RhY2tCb3VuZHMgeyBhY3RpdmVWTSwgc3RhY2tCb3VuZHMgfTsKIH0KIAogc3Rh
dGljIHZvaWQgaGFuZGxlU2lndXNyMShpbnQgc2lnbmFsTnVtYmVyLCBzaWdpbmZvX3QqIGluZm8s
IHZvaWQqIHVhcCkKQEAgLTEzMiw5ICsxMzcsOSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVTaWd1c3Ix
KGludCBzaWduYWxOdW1iZXIsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWFwKQogICAgIFNpZ25h
bENvbnRleHQgY29udGV4dChzdGF0aWNfY2FzdDx1Y29udGV4dF90Kj4odWFwKS0+dWNfbWNvbnRl
eHQpOwogICAgIGF1dG8gYWN0aXZlVk1BbmRTdGFja0JvdW5kcyA9IGZpbmRBY3RpdmVWTUFuZFN0
YWNrQm91bmRzKGNvbnRleHQpOwogICAgIGlmIChhY3RpdmVWTUFuZFN0YWNrQm91bmRzKSB7Ci0g
ICAgICAgIFZNKiB2bSA9IGFjdGl2ZVZNQW5kU3RhY2tCb3VuZHMudmFsdWUoKS5maXJzdDsKKyAg
ICAgICAgVk0qIHZtID0gYWN0aXZlVk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnZtOwogICAgICAg
ICBpZiAodm0pIHsKLSAgICAgICAgICAgIFN0YWNrQm91bmRzIHN0YWNrQm91bmRzID0gYWN0aXZl
Vk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnNlY29uZDsKKyAgICAgICAgICAgIFN0YWNrQm91bmRz
IHN0YWNrQm91bmRzID0gYWN0aXZlVk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnN0YWNrQm91bmRz
OwogICAgICAgICAgICAgVk1UcmFwcyYgdHJhcHMgPSB2bS0+dHJhcHMoKTsKICAgICAgICAgICAg
IGlmICh0cmFwcy5uZWVkVHJhcEhhbmRsaW5nKCkpCiAgICAgICAgICAgICAgICAgdHJhcHMudHJ5
SW5zdGFsbFRyYXBCcmVha3BvaW50cyhjb250ZXh0LCBzdGFja0JvdW5kcyk7CkBAIC0xNTMsNyAr
MTU4LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlU2lndHJhcChpbnQgc2lnbmFsTnVtYmVyLCBzaWdp
bmZvX3QqIGluZm8sIHZvaWQqIHVhcCkKICAgICBpZiAoIWFjdGl2ZVZNQW5kU3RhY2tCb3VuZHMp
CiAgICAgICAgIHJldHVybjsgLy8gTGV0IHRoZSBTaWduYWxTZW5kZXIgdHJ5IGFnYWluIGxhdGVy
LgogCi0gICAgVk0qIHZtID0gYWN0aXZlVk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLmZpcnN0Owor
ICAgIFZNKiB2bSA9IGFjdGl2ZVZNQW5kU3RhY2tCb3VuZHMudmFsdWUoKS52bTsKICAgICBpZiAo
dm0pIHsKICAgICAgICAgVk1UcmFwcyYgdHJhcHMgPSB2bS0+dHJhcHMoKTsKICAgICAgICAgaWYg
KCF0cmFwcy5uZWVkVHJhcEhhbmRsaW5nKCkpCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>