<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>45757</bug_id>
          
          <creation_ts>2023-04-05 16:31:40 +0300</creation_ts>
          <short_desc>gpg2 is stuck (spinning) under fakeroot-1.29-alt1 on e2k</short_desc>
          <delta_ts>2023-04-06 20:57:49 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>fakeroot</component>
          <version>unstable</version>
          <rep_platform>e2k</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan Zakharyaschev">imz</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>glebfm</cc>
    
    <cc>ilyakurdyukov</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>223976</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-05 16:31:40 +0300</bug_when>
    <thetext>fakeroot-1.29-alt1 on all e2k* platforms

# How to reproduce:

$ hsh --apt-conf /home/imz/.hasher/sisyphus_e2k/apt.conf --ini ~/hasher
$ hsh-install ~/hasher/ gpg-keygen
$ hsh-run ~/hasher/ -- fakeroot -- gpg-keygen --passphrase &apos;&apos; --name-real &apos;Some One&apos; --name-email someone@example.com /dev/null /usr/src/example-pubkey.asc
gpg: Generating a basic GPG key


And it gets stuck, consuming all CPU.

$ hsh-run ~/hasher/ -- rpm -q fakeroot gpg-keygen
fakeroot-1.29-alt1.e2kv4
gpg-keygen-20190611-alt1.noarch
$

# Expected behavior

It&apos;s ok not under fakeroot, or under fakeroot-1.25.3-alt1 (an older version), or on x86_64 and other platforms.

## Expected behavior (demonstrated not under fakeroot)

$ hsh-run ~/hasher/ -- gpg-keygen --passphrase &apos;&apos; --name-real &apos;Some One&apos; --name-email someone@example.com /dev/null /usr/src/example-pubkey.asc
gpg: Generating a basic GPG key
7CBB7A0FA1A496A7
$

## Expected behavior (demonstrated under fakeroot-1.25.3-alt1)

$ hsh --apt-conf /home/imz/.hasher/p10_e2k/apt.conf --ini ~/hasher1
$ hsh-install ~/hasher1/ gpg-keygen
$ hsh-run ~/hasher1/ -- rpm -q fakeroot gpg-keygen
fakeroot-1.25.3-alt1.e2kv4
gpg-keygen-20190611-alt1.noarch
$ hsh-run ~/hasher1/ -- fakeroot -- gpg-keygen --passphrase &apos;&apos; --name-real &apos;Some One&apos; --name-email someone@example.com /dev/null /usr/src/example-pubkey.asc
gpg: Generating a basic GPG key
8B2F8F26042FAF82
$

# The gpg2 command that gets stuck

It&apos;s actually just the first gpg2 invocation:

$ hsh-run ~/hasher/ -- fakeroot -- sh -efux gpg-keygen --passphrase &apos;&apos; --name-real &apos;Some One&apos; --name-email someone@example.com /dev/null /usr/src/example-pubkey.asc
...
++ mktemp -d
+ temp_dir=/usr/src/tmp/tmp.dHWob6q7al
+ trap &apos;rm -Rf &apos;\&apos;&apos;/usr/src/tmp/tmp.dHWob6q7al&apos;\&apos;&apos;&apos; EXIT HUP INT TERM
+ export GNUPGHOME=/usr/src/tmp/tmp.dHWob6q7al
+ GNUPGHOME=/usr/src/tmp/tmp.dHWob6q7al
+ cat
+ gpg2 --quiet --batch --no-tty --gen-key /usr/src/tmp/tmp.dHWob6q7al/.input
gpg: Generating a basic GPG key
^C</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223978</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-05 16:41:58 +0300</bug_when>
    <thetext>strace reports the following at this moment. (Here I used --root instead of fakeroot. /cmd contained the same command.)

$ hsh-run --root ~/hasher/ -- strace -f -y /bin/sh /cmd &amp;&gt;strace-apt-gpg.0

...
[pid 2005524] read(9,  &lt;unfinished ...&gt;
[pid 2005520] write(4, &quot;D (genkey(rsa(nbits 4:3072)))\n&quot;, 30 &lt;unfinished ...&gt;
[pid 2005524] &lt;... read resumed&gt; &quot;D (genkey(rsa(nbits 4:3072)))\n&quot;, 1002) = 30
[pid 2005520] &lt;... write resumed&gt; )     = 30
[pid 2005524] read(9,  &lt;unfinished ...&gt;
[pid 2005520] write(4, &quot;END&quot;, 3 &lt;unfinished ...&gt;
[pid 2005524] &lt;... read resumed&gt; &quot;END&quot;, 1002) = 3
[pid 2005520] &lt;... write resumed&gt; )     = 3
[pid 2005524] read(9,  &lt;unfinished ...&gt;
[pid 2005520] write(4, &quot;\n&quot;, 1 &lt;unfinished ...&gt;
[pid 2005524] &lt;... read resumed&gt; &quot;\n&quot;, 999) = 1
[pid 2005520] &lt;... write resumed&gt; )     = 1
[pid 2005520] read(4,  &lt;unfinished ...&gt;
[pid 2005524] access(&quot;/dev/random&quot;, R_OK) = 0
[pid 2005524] access(&quot;/dev/urandom&quot;, R_OK) = 0
[pid 2005524] getpid()                  = 2005523
[pid 2005524] getpid()                  = 2005523
[pid 2005524] open(&quot;/etc/gcrypt/random.conf&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] getpid()                  = 2005523
[pid 2005524] open(&quot;/etc/gcrypt/random.conf&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index0/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index1/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index2/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index3/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index0/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index1/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index2/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index3/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index0/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index1/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index2/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] openat(AT_FDCWD, &quot;/sys/devices/system/cpu/cpu2/cache/index3/level&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2005524] mmap2(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4588f88ea000
[pid 2005524] munmap(0x4588f88ea000, 135168) = 0
[pid 2005524] mprotect(0x4588fc021000, 8192, PROT_READ|PROT_WRITE) = 0
[pid 2005524] open(&quot;/dev/random&quot;, O_RDONLY) = 10
[pid 2005524] fcntl64(10, F_GETFD)      = 0
[pid 2005524] fcntl64(10, F_SETFD, FD_CLOEXEC) = 0
[pid 2005524] restart_syscall(&lt;... resuming interrupted fcntl64 ...&gt;) = -1 EINTR (Interrupted system call)
[pid 2005524] restart_syscall(&lt;... resuming interrupted restart_syscall ...&gt;) = -1 EINTR (Interrupted system call)
[pid 2005524] restart_syscall(&lt;... resuming interrupted restart_syscall ...&gt;) = -1 EINTR (Interrupted system call)
...

strace of the same moment without fakeroot. (Here, for some reason, strace didn&apos;t decode string args!..)

$ hsh-run ~/hasher/ -- strace -f -y /bin/sh /cmd2 &amp;&gt;strace-apt-gpg.2

...
[pid 2006040] read(9,  &lt;unfinished ...&gt;
[pid 2006036] write(4, 0x554e18, 30 &lt;unfinished ...&gt;
[pid 2006040] &lt;... read resumed&gt; 0x458f0c000ce0, 1002) = 30
[pid 2006036] &lt;... write resumed&gt; )     = 30
[pid 2006040] read(9,  &lt;unfinished ...&gt;
[pid 2006036] write(4, 0x4578b408e184, 3 &lt;unfinished ...&gt;
[pid 2006040] &lt;... read resumed&gt; 0x458f0c000ce0, 1002) = 3
[pid 2006036] &lt;... write resumed&gt; )     = 3
[pid 2006040] read(9,  &lt;unfinished ...&gt;
[pid 2006036] write(4, 0x4578b408e144, 1 &lt;unfinished ...&gt;
[pid 2006040] &lt;... read resumed&gt; 0x458f0c000ce3, 999) = 1
[pid 2006036] &lt;... write resumed&gt; )     = 1
[pid 2006036] read(4,  &lt;unfinished ...&gt;
[pid 2006040] access(0x458f09cd0190, R_OK) = 0
[pid 2006040] access(0x458f09cd01a0, R_OK) = 0
[pid 2006040] getpid()                  = 2006039
[pid 2006040] getpid()                  = 2006039
[pid 2006040] open(0x458f09ccfd50, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] getpid()                  = 2006039
[pid 2006040] open(0x458f09ccfd50, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] openat(AT_FDCWD, 0x458f0b2d0f70, O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2006040] mmap2(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x458f0b2d3000
[pid 2006040] munmap(0x458f0b2d3000, 135168) = 0
[pid 2006040] mprotect(0x458f0c021000, 8192, PROT_READ|PROT_WRITE) = 0
[pid 2006040] open(0x458f09cd12b0, O_RDONLY) = 10
[pid 2006040] fcntl64(10, F_GETFD)      = 0
[pid 2006040] fcntl64(10, F_SETFD, FD_CLOEXEC) = 0
[pid 2006040] getrandom(0x458f0b2d1140, 96, 0) = 96
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223980</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-05 16:50:20 +0300</bug_when>
    <thetext>May be related to https://bugzilla.altlinux.org/45737 ?..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223985</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2023-04-05 17:17:24 +0300</bug_when>
    <thetext>(Ответ для Ivan Zakharyaschev на комментарий #2)
&gt; May be related to https://bugzilla.altlinux.org/45737 ?..
JFYI, we&apos;ve observed another regression with fakeroot 1.29 on e2k (&quot;warning: Unable to reset I/O priority&quot; spam from rpm&apos;s lib/rpmscript.c that didn&apos;t occur with fakeroot 1.28 under the same kernel); glebfm@ noted that might be related to syscall function wrapper that got introduced in this version:
http://git.altlinux.org/gears/f/fakeroot.git?p=fakeroot.git;a=commitdiff;h=f091ef785ee9f3484b91c8e918d8241e8d244d83

(Ответ для Ivan Zakharyaschev на комментарий #0)
&gt; And it gets stuck, consuming all CPU.
All 100% of a single CPU core, strictly speaking. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223990</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-05 17:37:08 +0300</bug_when>
    <thetext>I&apos;ve had a thought (without any confirmation) that this new syscall wrapper can lead to access to prohibited memory among these universal 6 arguments, like to a result of speculative computation. Previously, I saw something like SIGBUS in such cases, but here I don&apos;t see any signals in strace at this moment, but just resuming some bizarre syscall after endless interrupts; the reason of the interrupts is not shown. This might not be the real reason, just an idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223991</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-05 17:38:20 +0300</bug_when>
    <thetext>(Ответ для Ivan Zakharyaschev на комментарий #4)
&gt; I&apos;ve had a thought (without any confirmation) that this new syscall wrapper
&gt; can lead to access to prohibited memory among these universal 6 arguments,
&gt; like to a result of speculative computation. Previously, I saw something
&gt; like SIGBUS in such cases, but here I don&apos;t see any signals in strace at
&gt; this moment, but just resuming some bizarre syscall after endless
&gt; interrupts; the reason of the interrupts is not shown. This might not be the
&gt; real reason, just an idea.

&quot;prohibited use of value&quot; would be a more correct description for that hypothetical situation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224015</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2023-04-05 22:31:11 +0300</bug_when>
    <thetext>(In reply to Ivan Zakharyaschev from comment #1)
&gt; strace of the same moment without fakeroot. (Here, for some reason, strace
&gt; didn&apos;t decode string args!..)

That&apos;s because strace was denied permission to access the tracee&apos;s memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224016</commentid>
    <comment_count>7</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-06 00:41:57 +0300</bug_when>
    <thetext>Meanwhile I&apos;ve understood the problem: a special calling convention on e2k. And I&apos;m doing a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224017</commentid>
    <comment_count>8</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-06 01:42:27 +0300</bug_when>
    <thetext>http://ftp.altlinux.org/pub/people/mike/elbrus/docs/elbrus_prog/html/chapter9.html#id34 :

9.5.1. Передача параметров¶

...

Зависимость передачи параметров от интерфейса процедуры

При генерации кода компилятор вправе использовать и доверять информации об интерфейсе процедуры в точке ее вызова. Эта информация получается из заданного предописания процедуры. Возможен и анализ по вызову при отсутствии предописания. Все предописания можно разделить на три группы:

    предописание со спецификацией всех параметров;

    предописание со спецификацией переменного числа параметров;

    предописание без спецификации параметров.

Передача параметров для вызова со спецификацией всех параметров осуществляется по общей схеме, приведенной выше.

Интерфейс обработки списка переменного числа параметров подразумевает нахождение их в памяти. Поэтому при передаче параметров для вызова процедуры с переменным числом параметров, параметры, входящие в список переменного числа (начиная с параметра перед эллипсом), сразу размещаются в соответствующие места локального стека, даже если они могут быть помещены в первые восемь регистров.

Если для вызова процедуры нет предописания со спецификацией параметров, необходимо предусмотреть все возможные случаи. Поэтому при формировании списка фактических параметров первые восемь параметров помещаются и на регистры (как в случае процедур с фиксированным числом параметров), и в память (как в случае процедур с переменным числом параметров).

Таким образом, процедура с переменным числом параметров всегда может предполагать, что переменная часть параметров находится в памяти. А для процедуры с фиксированным числом параметров первые параметры находятся в первых восьми регистрах.

* * *

The syscall.S assembler implementation on e2k indeed simply loads
all arguments from the stack.
    
I&apos;m not sure whether this difference in the prototype can be important
for some other platform, but who knows...

glibc&apos;s syscall.S implementations don&apos;t look like this would be the case. However,
searching the web, one can learn that AArch64/MacOS has the same &quot;problem&quot;.

(Note that on aarch64 xN registers are 64-bit registers, and wN are their 32-bit parts.)

https://cpufun.substack.com/i/32634393/why-bother-us-if-this-all-works :

Why bother us if this all works?

The reason this is an issue at all is that it doesn’t work this way on AArch64/MacOS You may have checked the AArch64 compilers in Compiler Explorer and seen code like this,

        add     x0, sp, #4                      // =4
        mov     w1, #1
        mov     w2, #2
        mov     w3, #3
        bl      foo(int*, int, int, int)
...       
        add     x0, sp, #4                      // =4
        mov     w1, #4
        mov     w2, #5
        mov     w3, #6
        bl      foo_ellipsis(int*, ...)

which shows the same properties as that on x86_64: the arguments are being passed in the same places whether or not this is a variadic function, so that’s all good, right?

But… and it’s a big BUT, the calling convention on AArch64/MacOS is not like this. Here the compiler doesn’t load arguments which are matching the ellipsis into registers, but rather puts them onto the stack. Then the va_list code extracts them from there. As a result the test code fails when run natively on the MacOS M1 machines.

* * *

I&apos;m making my fix pretty and making a task with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224018</commentid>
    <comment_count>9</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-06 02:54:19 +0300</bug_when>
    <thetext>I suggest the fix in task 318100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224020</commentid>
    <comment_count>10</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-06 03:27:42 +0300</bug_when>
    <thetext>(Ответ для Ivan Zakharyaschev на комментарий #4)
&gt; I&apos;ve had a thought (without any confirmation) that this new syscall wrapper
&gt; can lead to access to prohibited memory among these universal 6 arguments,
&gt; like to a result of speculative computation. Previously, I saw something
&gt; like SIGBUS in such cases, but here I don&apos;t see any signals in strace at
&gt; this moment, but just resuming some bizarre syscall after endless
&gt; interrupts; the reason of the interrupts is not shown. This might not be the
&gt; real reason, just an idea.

No, the way the syscall wrapper was compiled (and optimized) on e2k (see with disassemble in gdb) was almost the same as syscall.S implementation; so, since they write it that way, nothing bad should have been expected (except for the wrong calling convention):


# tail -n28 glibc-2.29-alt2.E2K.26.012.1/sysdeps/unix/sysv/linux/e2k/syscall.S

#include &lt;sysdep.h&gt;

        .ignore ld_st_style
        .text

ENTRY (syscall)

        setwd   wsz = 0x9
        setbn   rsz = 0x3, rbs = 0x5, rcur = 0x0
        getsp   0x0, %r7

        __SYSCALL_ARG_MEM (%r7, 0x0, %b[0])
        __SYSCALL_ARG_MEM (%r7, 0x8, %b[1])
        __SYSCALL_ARG_MEM (%r7, 0x10, %b[2])
        __SYSCALL_ARG_MEM (%r7, 0x18, %b[3])
        __SYSCALL_ARG_MEM (%r7, 0x20, %b[4])
        __SYSCALL_ARG_MEM (%r7, 0x28, %b[5])
        __SYSCALL_ARG_MEM (%r7, 0x30, %b[6])

        sdisp   %ctpr1, __SYSCALL_TRAPNUM
        call    %ctpr1, wbs = 0x5

        __SYSCALL_OUTPUT

        ret

PSEUDO_END (syscall)
#

__SYSCALL_ARG_MEM is just a load.

glibc-2.29-alt2.E2K.26.012.1/sysdeps/unix/sysv/linux/e2k/e2k64/sysdep.h:
#define __SYSCALL_ARG_MEM(src1, src2, dst)      ldd src1, src2, dst</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224066</commentid>
    <comment_count>11</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-06 15:34:09 +0300</bug_when>
    <thetext>(Ответ для Ivan Zakharyaschev на комментарий #9)
&gt; I suggest the fix in task 318100

Fixed there.

From: bugzilla-admin@altlinux.org
Subject: [Bug 45757] Unable to close via changelog: no such bug

You have tried to close bug 45757 via changelog
(see below for the changelog excerpt).

Unfortunately, it is not possible: this bug does not exist
https://bugzilla.altlinux.org/45757



Sincerely, your Bugzilla.

:-/ ??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224095</commentid>
    <comment_count>12</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2023-04-06 20:57:49 +0300</bug_when>
    <thetext>Amended a bit more in:

task #318154: added #100: build tag &quot;1.29-alt3&quot; from /people/imz/packages/fakeroot.git

* Thu Apr  6 2023 Ivan Zakharyaschev &lt;imz@altlinux.org&gt; 1.29-alt3
- Fixed a compiler error of older GCCs (for p10) in the wrapper for
  syscall function.
- Warn the maintainer if a function definition is missing (when it is not
  generated for special cases like calling a variadic function like syscall).</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>