From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 20371 invoked from network); 22 Dec 2020 13:55:47 -0000 Received: from krantz.zx2c4.com (192.95.5.69) by inbox.vuxu.org with ESMTPUTF8; 22 Dec 2020 13:55:47 -0000 Received: by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 2e66161a; Tue, 22 Dec 2020 13:46:33 +0000 (UTC) Return-Path: Received: from sdaoden.eu (sdaoden.eu [217.144.132.164]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTPS id 3d6d374e (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Tue, 22 Dec 2020 13:46:31 +0000 (UTC) Received: by sdaoden.eu (Postfix, from userid 1000) id D82FA16057; Tue, 22 Dec 2020 14:55:37 +0100 (CET) Date: Tue, 22 Dec 2020 14:55:37 +0100 From: Steffen Nurpmeso To: gs-cgit-lists.zx2c4.com@gluelogic.com Cc: cgit@lists.zx2c4.com Subject: Re: cgit 1.2.3: lighttpd 1.4.57, AlpineLinux [edge]: using cache breaks delivery Message-ID: <20201222135537.ovyl4%steffen@sdaoden.eu> In-Reply-To: <20201222061206.GA54419@xps13> References: <20201222061206.GA54419@xps13> Mail-Followup-To: gs-cgit-lists.zx2c4.com@gluelogic.com, cgit@lists.zx2c4.com User-Agent: s-nail v14.9.20-84-g7268a84d OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. X-BeenThere: cgit@lists.zx2c4.com X-Mailman-Version: 2.1.30rc1 Precedence: list List-Id: List for cgit developers and users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: cgit-bounces@lists.zx2c4.com Sender: "CGit" gs-cgit-lists.zx2c4.com@gluelogic.com wrote in <20201222061206.GA54419@xps13>: |>Steffen Nurpmeso wrote in |> <20201221193127.zbZeP%steffen at sdaoden.eu>: |>|John Keeping wrote in |>| : |>||On Mon, Dec 21, 2020 at 05:26:19PM +0100, Steffen Nurpmeso wrote: |>||> I discovered today that cgit no longer delivers pages, and it must |>||> have been like that for some time. The server looks show |>||> successful delivery, the cgit cache is populated and rotated just |>||> correctly, but all cgit delivers is that final error of main() as |>||> |>||>
Error processing page: Invalid argument (22)||> > |> ... |>||> I am pretty sure cgit delivered some weeks ago, the most notable |>||> difference is that AlpineLinux switched to Lighttpd 1.4.56 then |>||> .57, which seems to have brought tremendous changes under the |> ... |>|But the file was generated normally: |>| |>| # ll /var/lib/lighttpd/cgit/b1000000 |>| -rw------- 1 lighttpd lighttpd 23417 Dec 21 20:22 /var/lib/light\ |>| tpd/cgit/b1000000 |> ... |> |>Slightly resorted: |> |> ... |>||Have you looked at the log output? |>| [cgit] error printing cache /var/lib/lighttpd/cgit/b1000000: Invalid \ |>| argument (22) |> ... |>||and this may be caused by sendfile(2) failing due to some difference in |>||how the web server is setting up the output file descriptor. You may |>||want to rebuild CGit without HAVE_LINUX_SENDFILE and see if that works. |> |>So i build it with ... |> - CGIT_CFLAGS += -DHAVE_LINUX_SENDFILE |> + #CGIT_CFLAGS += -DHAVE_LINUX_SENDFILE ... |>and .. it works. |> |>Thank you, i will open an AlpineLinux bug report. And lighttpd. ... |I would like to propose an alternative and more portable solution: | |cgit cache should fallback to lseek, xread, xwrite if sendfile fails. (Yes.) |Even if the kernel supports sendfile() and cgit is built with |HAVE_LINUX_SENDFILE defined, certain filesystem types might not support |sendfile() operations. This is ext3 and the overall system has not changed for years (but following AlpineLinux [edge]). |The following patch falls back to lseek, xread, xwrite if the *initial* |call to sendfile() fails. I will use it this afternoon, and do some more testing on the descriptor (fstat, i don't know) because gstrauss (lighttpd maintainer) is "driving up the walls" because he cannot reproduce the issue it seems. He says nothing changed regarding the descriptor handling, mysterious, maybe a kernel bug, 5.10.1 it is at the moment. |diff --git a/cache.c b/cache.c ... Thanks, and Ciao, --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)