[zeromq-dev] Java API is not notifed of C++ assert failures.
Martin Sustrik
sustrik at fastmq.com
Sat Apr 11 23:44:23 CEST 2009
Hi Holger,
Holger Hoffstätte wrote:
> Martin Sustrik wrote:
>> It aborts the process, as it should, [..]
>
> I understand the intended motivation for this behaviour, but nevertheless
> disagree with it. It makes integration of zmq into more complex Java (or
> even C/C++) scenarios almost impossible and at best a high risk
> proposition, as the library can arbitrarily terminate the JVM and any
> other services it runs.
> A brief inspection leads me to believe that the zmq_error_handler is not
> responsible for the asserts but only reconnection, correct? IMHO it might
> be much more acceptable in a wider range of use cases to allow a pluggable
> assertion handler as well (zmq_set_failure_handler?), which should allow
> clean shutdown and restart of the entire zmq subsystem, without making
> assumptions about the lifetime of the containing process.
> Can you say if this would be possible at all?
This is pretty contentious issue. However, let's have a look at
possibilities here:
1. Assert is caused by a bug in 0MQ. Solution: Fix the bug.
2. Assert is caused by incorrect usage of 0MQ. Solution: Fix the
application.
3. Assert happens in a perfectly valid scenario (i.e. no bugs are
involved). Solution: Define the scenario. Prove that it is valid. Find a
systematic solution. Implement the solution.
4. The application is inherently buggy and cannot be repaired. The bugs
in application make 0MQ fail. (This can be the case with legacy
applications for example.) Solution: Fork 0MQ and write the workaround
for the problem you are experiencing.
In short, if you are having problem with a specific assert, let's fix
the problem. Don't try to introduce complex generic mechanisms to handle
the unhandleable.
Opposed? Go on, defend your case :)
Martin
More information about the zeromq-dev
mailing list