Briefly - Can you try master. This should be fixed in the upcoming
0.18.
Andrew
On Wed, 2017-07-26 at 10:51 +0000, Adel Boutros wrote:
> Hello,
>
>
> I hope you missed my mails about Solaris 😉
>
>
> We are currently testing whether we can compile on Solaris using GCC
> 4.9.2. We were successful in doing so for Solaris x86 but we have hit
> a problem in Sparc.
>
>
> It seems related to certain assumptions made around how threads
> propagates exceptions:
>
>
> The failing test is "examples/cpp/example_test.py: test_ssl_bad_name"
>
> In examples/cpp/ssl.cpp [1], it spawns another thread and wait for it
> to throw an exception.
>
>
> However, if you check the thread documentation[2], it states the
> propagation of exceptions is not guaranteed[3].
>
>
> So I was wondering if the assumption that Proton makes is not a big
> dangerous and should be changed?
>
>
> Simpler Example
>
> ---------------------
> #include <stdexcept>
> #include <iostream>
> #include <thread>
>
> class example_cert_error : public std::runtime_error
> {
> public:
> explicit example_cert_error(const std::string& s) :
> std::runtime_error(s) {}
> };
>
> int main(int argc, char** argv) {
> try {
> std::thread th([](){throw example_cert_error("my error"); });
> } catch (const example_cert_error& ce) {
> std::cout << "Caught: " << ce.what() << std::endl;
> }
> return 0;
> }
>
>
>
> Solaris X86
>
> ---------------
> $ g++49 -std=c++11 throw.cpp -o throw
> $ ./throw
> Caught: my error
>
> Solaris Sparc
> -----------------
> $ g++49 -std=c++11 throw.cpp -o throw
> $ ./throw
> terminate called without an active exception
> Abort (core dumped)
>
>
> [1]: https://github.com/apache/qpid-proton/blob/0.16.x/examples/cpp/s
> sl.cpp#L178
>
> [2]: http://en.cppreference.com/w/cpp/thread/thread
>
> [3]: The top-level function may communicate its return value or an
> exception to the caller
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]