From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot1-x32f.google.com (mail-ot1-x32f.google.com [IPv6:2607:f8b0:4864:20::32f]) by sourceware.org (Postfix) with ESMTPS id D40753857421 for ; Tue, 25 Oct 2022 21:13:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D40753857421 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-ot1-x32f.google.com with SMTP id m5-20020a9d73c5000000b0066738ce4f12so1493949otk.12 for ; Tue, 25 Oct 2022 14:13:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=drG7vZ5MgfaxQlCjXwZfzFhkOaVkaVtZS0brwwOhjJM=; b=BAg0jygEqO7p8RW04l9ybtBxmZs2IdyjPs0gGUUe1cUCzSwocO+HyDXACfhbJEeaPJ O6Ot2xbY6PkztXEPPdnevwJMNqbZ0sJlG92B8tQ/LvL1LJjOYCWMGUOEr4kktBpjXPb4 VsKd93G3Ijzg6RZkj9Qnaqzo7wXmcXoI61h3eLh6LwZZ40qidsF4kQSRs2ZFu5c7TsZ4 cYOspCdu26t+5zmJ2kNxRCBuCcqtreuxU/9doeo1p1K/LOPMips+L4wAcetyOhtxVCn3 /Qku4VTtNc+UflzGfSYDsVPhB+566HJj/krv73X8ZMh7JvZbcbbGkgzwMZ41zy+NxZtw mbZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=drG7vZ5MgfaxQlCjXwZfzFhkOaVkaVtZS0brwwOhjJM=; b=MjA6gGV2DkFw9Dj3Xym2AhLaU3t64P9Ns9nKyxyCcgmk4eSoBlXUxhOvN+em1EqtyG iU/3Rn0IHDidhOgYe0YdZ/KWTc0fypMnRO9BQoNzLQWgXHVrBFFniABYL9Dl0CPYNKjD /K8dWmGgaGDg2Agv62fuM1F1ZdCY5NWqHJl9wk+Z7z4se1z8CdYJLc8Zf+92UVAhqtPx kFbfjSKby80+axDJ34oPBVQo7ALSicxnlENJCjnDsfFM9DYJZzPN3sJXmiP/P4I2Tswn 9Slh2JBI0C4hhzAaTVFRDQZKZUoBU4nR6Cg6yh0DI/o4AMm5hhnOZijymUaNp4CUEYrL kYWQ== X-Gm-Message-State: ACrzQf0PEXPA4jdGiU01G5DEibB96+wVpzedFwJzKaFf4s+dxQJQiIhj cQ7CdwRNtQuP4yyKoqQYT/W12g== X-Google-Smtp-Source: AMsMyM4+OQGupMEakieeTstiyu9Vs0ymL1BYQiNMdX5URm5nZo0JzMN7UQZ+Z8mGXmAiZng4wKJYUg== X-Received: by 2002:a9d:61d6:0:b0:661:c1ad:848f with SMTP id h22-20020a9d61d6000000b00661c1ad848fmr20418875otk.111.1666732405949; Tue, 25 Oct 2022 14:13:25 -0700 (PDT) Received: from ?IPV6:2804:1b3:a7c0:17c8:3978:9d2:1936:95b? ([2804:1b3:a7c0:17c8:3978:9d2:1936:95b]) by smtp.gmail.com with ESMTPSA id ck4-20020a056830648400b00661c0747545sm1500004otb.44.2022.10.25.14.13.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Oct 2022 14:13:25 -0700 (PDT) Message-ID: <72f37987-5f8a-99c5-bd36-5153343dcf75@linaro.org> Date: Tue, 25 Oct 2022 18:13:23 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Subject: Re: nscd time_t size mismatch problem Content-Language: en-US To: Zev Weiss , libc-alpha@sourceware.org Cc: openbmc@lists.ozlabs.org, Wayne Tung References: From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 25/10/22 16:54, Zev Weiss via Libc-alpha wrote: > Hello glibc devs, > > We've recently been seeing some misbehavior from nscd in OpenBMC.  It > manifests as lots of log messages like: > >     disabled inotify-based monitoring for file /passwd': No such file or directory >     stat failed for file /passwd'; will try again later: No such file or directory >     disabled inotify-based monitoring for file /group': No such file or directory >     stat failed for file /group'; will try again later: No such file or directory >     disabled inotify-based monitoring for file /hosts': No such file or directory >     stat failed for file /hosts'; will try again later: No such file or directory >     disabled inotify-based monitoring for file /resolv.conf': No such file or directory >     stat failed for file /resolv.conf'; will try again later: No such file or directory > > and so forth.  I initially assumed it was a configure-time --sysconfdir mixup, but after digging into it I found that it actually stems from a time_t size mismatch (this is a 32-bit ARM gnueabi target): > >     $ gdb -batch -ex 'pt time_t' -ex 'p sizeof(time_t)' time/time.o >     type = long >     $1 = 4 >     $ gdb -batch -ex 'pt time_t' -ex 'p sizeof(time_t)' nscd/nscd.o >     type = long long >     $1 = 8 > > The confusing log messages are thus just the result of the coincidence that sizeof(long long) - sizeof(long) == strlen("/etc"), which causes the disagreement in the layout of struct traced_file to make it look like the 'fname' member just had its directory prefix chopped off. > > In the discussion of the bug in the OpenBMC issue tracker [0], Wayne Tung (CCed) came up with the patch below, which does seem to solve the immediate problem, but if I'm understanding things right does so by just reverting nscd to a 32-bit time_t, and so I'd expect probably wouldn't be considered the "right" fix -- however I don't presently know enough about the 32/64-bit time_t transition and ensuing compatibility concerns to know what the right fix really is.  Should nscd perhaps be using __time64_t or something instead of time_t? Reverting to 32 bits time_t only means that we are postponing some potential failure to y2038, we really move everything to 64 bit time_t. Could you check if the following patch fix it? The issue is we do build nss modules with 64 time_t, however some features are built on libc.so itself and in such cases we need to explicit use the internal __time64_t type. diff --git a/nscd/nscd.h b/nscd/nscd.h index 368091aef8..f15321585b 100644 --- a/nscd/nscd.h +++ b/nscd/nscd.h @@ -65,7 +65,7 @@ typedef enum struct traced_file { /* Tracks the last modified time of the traced file. */ - time_t mtime; + __time64_t mtime; /* Support multiple registered files per database. */ struct traced_file *next; int call_res_init; > > > Thanks, > Zev Weiss > > [0] https://github.com/openbmc/openbmc/issues/3881 > > From 0fda9faf757abd4f5469e6d9207499e97f79a663 Mon Sep 17 00:00:00 2001 > From: Wayne Tung > Date: Thu, 13 Oct 2022 13:10:21 +0800 > Subject: [PATCH] Use 32 bits time_t for ncsd > > --- >  Makeconfig | 2 +- >  1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Makeconfig b/Makeconfig > index 47db08d6ae..f78f7cc74a 100644 > --- a/Makeconfig > +++ b/Makeconfig > @@ -869,7 +869,7 @@ endif >  +extra-math-flags = $(if $(filter libm,$(in-module)),-fno-math-errno,-fmath-errno) > >  # Use 64 bit time_t support for installed programs > -installed-modules = nonlib nscd lddlibc4 ldconfig locale_programs \ > +installed-modules = nonlib lddlibc4 ldconfig locale_programs \ >             iconvprogs libnss_files libnss_compat libnss_db libnss_hesiod \ >             libutil libpcprofile libSegFault >  +extra-time-flags = $(if $(filter $(installed-modules),\ > -- >