[{"id":1735,"web_url":"https://patchwork.libcamera.org/comment/1735/","msgid":"<20190603062459.fip4glfc4hjtotbc@uno.localdomain>","date":"2019-06-03T06:24:59","subject":"Re: [libcamera-devel] [PATCH] Avoid Segmentation Fault when use\n\t--help parameter","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hello Emanuel,\n   thanks for the patch.\n\nI see a segfault as well when calling cam with the --help option. NIce\ncatch!\n\nOn Sun, Jun 02, 2019 at 10:57:49PM -0300, Emmanuel Arias wrote:\n> When Cam::parseOptions receive help args return -EINTR and\n> Cam::init return 0 to main. But the first if does not return EXIT_FAILURE\n> and continue. That launch a SegFaults\n> ---\n>  src/cam/main.cpp | 4 ++--\n>  1 file changed, 2 insertions(+), 2 deletions(-)\n>\n> diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> index dbf0491..d23390a 100644\n> --- a/src/cam/main.cpp\n> +++ b/src/cam/main.cpp\n> @@ -61,7 +61,7 @@ int CamApp::init(int argc, char **argv)\n>\n>  \tret = parseOptions(argc, argv);\n>  \tif (ret < 0)\n> -\t\treturn ret == -EINTR ? 0 : ret;\n> +\t\treturn ret == -EINTR ? -EINTR : ret;\n\nIf ret == -EINTR you return -EINTR, while otherwise you return ret.\nIsn't this equivalent to 'return ret' directly :) ?\n\nFurthermore, the main loop that calls CamApp::init() handles the\nreturn code as:\n\n\tif (app.init(argc, argv))\n\t\treturn EXIT_FAILURE;\n\nSo you would EXIT_FAILURE on --help, which is not nice.\n\nHow about returning ret from CamApp::init() and handle the return code\nin the main loop with:\n\n-       if (app.init(argc, argv))\n-               return EXIT_FAILURE;\n+       int ret = app.init(argc, argv);\n+       if (ret)\n+               return ret == -EINTR ? 0 : EXIT_FAILURE;\n\n>\n>  \tcm_ = CameraManager::instance();\n>\n> @@ -196,7 +196,7 @@ int main(int argc, char **argv)\n>\n>  \tif (app.init(argc, argv))\n>  \t\treturn EXIT_FAILURE;\n> -\n> +\n\nThis is an unrelated change, so please drop it.\n\nThank you\n    j\n\n>  \tstruct sigaction sa = {};\n>  \tsa.sa_handler = &signalHandler;\n>  \tsigaction(SIGINT, &sa, nullptr);\n> --\n> 2.11.0\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net\n\t[217.70.183.198])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 62D60618F7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  3 Jun 2019 08:23:51 +0200 (CEST)","from uno.localdomain (2-224-242-101.ip172.fastwebnet.it\n\t[2.224.242.101]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 08776C000C;\n\tMon,  3 Jun 2019 06:23:47 +0000 (UTC)"],"X-Originating-IP":"2.224.242.101","Date":"Mon, 3 Jun 2019 08:24:59 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Emmanuel Arias <eamanu@eamanu.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190603062459.fip4glfc4hjtotbc@uno.localdomain>","References":"<20190603015749.1311-1-eamanu@eamanu.com>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\"; boundary=\"oedmroziifnjpesp\"","Content-Disposition":"inline","In-Reply-To":"<20190603015749.1311-1-eamanu@eamanu.com>","User-Agent":"NeoMutt/20180716","Subject":"Re: [libcamera-devel] [PATCH] Avoid Segmentation Fault when use\n\t--help parameter","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Mon, 03 Jun 2019 06:23:51 -0000"}}]