[
https://issues.apache.org/jira/browse/MESOS-1632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14072547#comment-14072547
]
Dominic Hamon edited comment on MESOS-1632 at 7/24/14 12:06 AM:
----------------------------------------------------------------
I think this is due to an implicit conversion from
{{RepeatedPtrField<Resource>}} to {{Resources}}.
Having looked deeper, making this explicit isn't really an option given it's
part of the public API and relied on when extracting resources from offers.
It's still unclear to me why the method lookup would change based on the stream
operator changes.
was (Author: dhamon):
I think this is due to an implicit conversion from
{{RepeatedPtrField<Resource>}} to {{Resources}}. We should try to make that
conversion explicit. The stream operators are already explicitly converting
anyway.
> Seg fault due to infinite recursion "<< RepeatedPtrField<Resource>"
> -------------------------------------------------------------------
>
> Key: MESOS-1632
> URL: https://issues.apache.org/jira/browse/MESOS-1632
> Project: Mesos
> Issue Type: Bug
> Affects Versions: 0.20.0
> Reporter: Yan Xu
> Assignee: Isabel Jimenez
>
> {noformat:title=error}
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0x7fffe7daa940 (LWP 40525)]
> 0x00007ffff4fb3b78 in _int_malloc () from /lib64/libc.so.6
> (gdb) bt
> #0 0x00007ffff4fb3b78 in _int_malloc () from /lib64/libc.so.6
> #1 0x00007ffff4fb609e in malloc () from /lib64/libc.so.6
> #2 0x00007ffff55db25d in operator new(unsigned long) () from
> /usr/lib64/libstdc++.so.6
> #3 0x00007ffff55db379 in operator new[](unsigned long) () from
> /usr/lib64/libstdc++.so.6
> #4 0x00007ffff6f83c97 in
> google::protobuf::internal::RepeatedPtrFieldBase::Reserve (this=0xd401b10,
> new_size=<optimized out>) at google/protobuf/repeated_field.cc:51
> #5 0x00007ffff6d9d526 in
> MergeFrom<google::protobuf::RepeatedPtrField<mesos::Value_Range>::TypeHandler>
> (other=..., this=0xd401b10) at
> ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.h:864
> #6 MergeFrom (other=..., this=0xd401b10) at
> ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.h:1091
> #7 mesos::Value_Ranges::MergeFrom (this=0xd401b00, from=...) at
> mesos.pb.cc:7440
> #8 0x00007ffff6da1e3d in mesos::Resource::MergeFrom
> (this=this@entry=0xd401a90, from=...) at mesos.pb.cc:9196
> #9 0x00000000004c5acc in Merge (to=<optimized out>, from=...) at
> ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.h:339
> #10
> google::protobuf::internal::RepeatedPtrFieldBase::MergeFrom<google::protobuf::RepeatedPtrField<mesos::Resource>::TypeHandler>
> (this=this@entry=0x7fffe75ab240, other=...)
> at
> ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.h:866
> #11 0x00000000004c5d56 in MergeFrom (other=..., this=0x7fffe75ab240) at
> ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/google/protobuf/repeated_field.h:1091
> #12 Resources (_resources=..., this=0x7fffe75ab240) at
> ../../include/mesos/resources.hpp:78
> #13 mesos::operator<< (stream=..., resources=...) at
> ../../include/mesos/resources.hpp:251
> #14 0x00000000004c5e7a in operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #15 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #16 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #17 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #18 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #19 mesos::operator<< (stream=..., resources=...) at
> ../../include/mesos/resources.hpp:251
> #20 0x00000000004c5e7a in operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #21 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #22 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #23 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #24 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #25 mesos::operator<< (stream=..., resources=...) at
> ../../include/mesos/resources.hpp:251
> #26 0x00000000004c5e7a in operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #27 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #28 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #29 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #30 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #31 mesos::operator<< (stream=..., resources=...) at
> ../../include/mesos/resources.hpp:251
> #32 0x00000000004c5e7a in operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #33 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #34 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> #35 operator<< (resources=..., stream=...) at
> ../../include/mesos/resources.hpp:251
> ...
> {noformat}
> {code:title=relevant code}
> /*implicit*/
> Resources(const google::protobuf::RepeatedPtrField<Resource>& _resources)
> {
> resources.MergeFrom(_resources);
> }
> inline std::ostream& operator << (
> std::ostream& stream,
> const google::protobuf::RepeatedPtrField<Resource>& resources)
> {
> return stream << Resources(resources);
> }
> {code}
> It was fine before this commit:
> https://github.com/apache/mesos/commit/c9d1c4cd1be097e3bcee63855847da272c43bc68
--
This message was sent by Atlassian JIRA
(v6.2#6252)