Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id EF9F7431FB6 for ; Wed, 17 Apr 2013 07:05:31 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OVx+S4QWD055 for ; Wed, 17 Apr 2013 07:05:31 -0700 (PDT) Received: from foo.net (70-36-235-136.dsl.static.sonic.net [70.36.235.136]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id 68940431FAF for ; Wed, 17 Apr 2013 07:05:31 -0700 (PDT) Received: from foo.net (localhost [127.0.0.1]) by foo.net (8.14.5+Sun/8.14.5) with ESMTP id r3HE5T2m020042; Wed, 17 Apr 2013 07:05:29 -0700 (PDT) To: Vladimir Marek Subject: Re: crash during saving In-Reply-To: Your message of "Wed, 17 Apr 2013 10:53:54 +0200." <20130417085354.GE7807@pub.cz.oracle.com> Date: Wed, 17 Apr 2013 07:05:29 -0700 Message-ID: <20041.1366207529@foo.net> From: Blake Jones X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0.2 (foo.net [127.0.0.1]); Wed, 17 Apr 2013 07:05:30 -0700 (PDT) Cc: notmuch@notmuchmail.org X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Apr 2013 14:05:32 -0000 > Right, so the problem really seems to be in throwing/catching > exception. Function "_notmuch_message_remove_term" is supposed to > catch the exception and ignore it. Which does not happen in my case. Yep, that was exactly what I was seeing. > On a side note, I wonder, is catching exception faster than going > through list of tags to see if given tag exists? Might be interesting > to compare. I tried that as a workaround at first (just to get it working, not caring about performance). But I realized that libxapian uses exceptions for a lot of failure modes, and I actually ran into one or two others, so I decided I needed to just get it working. To simplify the problem, you might want to try building a very simple stub version of the whole thing -- i.e. a C program that makes a call to a C-interface "liba", which just makes a call into a C++ "libb" library and tries to catch an exception from it; the "libb" library would just throw an exception. If that reproduces the problem, that might help you debug your setup. (Again, I eventually settled on using GCC 4.5.2, and didn't have the intestinal fortitude to get Studio working. Especially once I saw problems with C++ exception handling. If you can get it working, more power to you!) Blake