Page MenuHome GnuPG

golangTag
ActivePublic

Members

  • This project does not have any members.
  • View All

Watchers

  • This project does not have any watchers.
  • View All

Details

Description

Stuff related to the Go language

Recent Activity

Sat, Jul 12

alexk added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

I created a Go test program that runs several Go routines, each of which verifies a byte array loaded from a file in advance. Each go-routine is spawned with a configurable delay in milliseconds. I tested it with 100 iterations, which resulted in at least 50 parallel processes. Each verification process uses its own context, as Crio does. I didn't encounter any errors.

Here is my repository with a README containing more information: https://git.sr.ht/~kulbartsch/gpgmego-verify-load-test

Sat, Jul 12, 12:27 PM · golang, gpgme, Bug Report

Jun 26 2025

gniibe changed the status of T7696: POSIX: spawn fixes, a subtask of T7660: GPGME invocation by cri-o hangs on gpgme_op_verify, from Open to Testing.
Jun 26 2025, 6:49 AM · golang, gpgme, Bug Report

Jun 23 2025

gniibe changed the status of T7694: GPGME: gpgme_io_spawn issues, a subtask of T7660: GPGME invocation by cri-o hangs on gpgme_op_verify, from Open to Testing.
Jun 23 2025, 7:17 AM · golang, gpgme, Bug Report

Jun 20 2025

gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

For issues of get_max_fds, I created a sub task, although it seems not the direct cause of this particular problem.

Jun 20 2025, 2:13 AM · golang, gpgme, Bug Report
gniibe triaged T7694: GPGME: gpgme_io_spawn issues as Normal priority.
Jun 20 2025, 2:07 AM · gpgme, Bug Report

Jun 19 2025

gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

I test following test program (gcc -o t-gmf t-gmf.c) on Debian machine of S390x.

Jun 19 2025, 9:26 AM · golang, gpgme, Bug Report

Jun 17 2025

gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

In the log, we can observe duplicated lines generated by
https://dev.gnupg.org/source/gpgme/browse/master/src/posix-io.c$545
Example is like:

2025-05-19 20:16:35 gpgme[21970.55d7]   _gpgme_io_spawn: check: fd[0] = 0x1c -> 0x1
2025-05-19 20:16:35 gpgme[21970.55d7]   _gpgme_io_spawn: check: fd[0] = 0x1c -> 0x1
Jun 17 2025, 10:01 AM · golang, gpgme, Bug Report

Jun 4 2025

sj98ta added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

No other processes that I have seen. However please see this last update by Kulbarsch. https://github.com/cri-o/cri-o/issues/8906#issuecomment-2936351035

Jun 4 2025, 12:55 PM · golang, gpgme, Bug Report
gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

@sj98ta
Does cri-o invokes processes (other than the ones of gpgme) by its threads?

Jun 4 2025, 2:07 AM · golang, gpgme, Bug Report

Jun 3 2025

sj98ta added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

I am not sure that I am clear on what you are asking. I am not an expert on cri-o, but is does seem that there are multiple processes (threads), which all call gpgme_op_verify There are also calls to gpgme_op_import

Jun 3 2025, 3:59 PM · golang, gpgme, Bug Report
gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

@sj98ta Please let us know if cri-o invokes other processes (except the ones by gpgme) or not.
If cri-o invokes other processes (by other threads), my theory matters; With the interference by other processes holding pipe file descriptors, gpgme keeps polling pipe file descriptors.

Jun 3 2025, 9:05 AM · golang, gpgme, Bug Report

Jun 2 2025

sj98ta added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

I have now seen instances where 1, 2, or 3 processes hang.

Jun 2 2025, 5:31 PM · golang, gpgme, Bug Report

May 30 2025

werner added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

Re: pipe2: In gpgme_io_pipe we set FD_CLOEXEC only for one end of the pipe. Thus simply using pipe2 would change the behaviour.

May 30 2025, 11:09 AM · golang, gpgme, Bug Report
gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

Here is a hypothetical application which may have similar problem.
(1) It is a multi threaded application using gpgme, forking another process (possibly, exec).
(2) One of threads invokes gpgme_new, gpgme_op_import and gpg_op_verify.
(3) When the control goes to gpgme_op_* then gpgme_io_spawn by a thread A, another thread B forks a process.
(3-1) While the thread A is polling pipe I/O, forked process holds pipe file descriptors too.
(3-2) Until the forked process exists, pipe I/O polling by the thread A continues (because pipe's other end is still active).

May 30 2025, 7:06 AM · golang, gpgme, Bug Report
collinfunk added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

There is FD_CLOFORK on Solaris 11.4 as well. It is a part of POSIX-1.2024, but who knows how long until that becomes common.

May 30 2025, 5:05 AM · golang, gpgme, Bug Report
gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

I don't know if it is related to this particular case, but I found a possible race condition in _gpgme_io_pipe.
Between pipe and fcntl with FD_CLOEXEC, another thread may fork a process which keeps running.
It would be good to use pipe2 here:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/pipe.html

May 30 2025, 4:46 AM · golang, gpgme, Bug Report

May 29 2025

gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

Another possible cause is... gpgme uses closefrom in GNU C library, if available. if it doesn't work well, it would be possible invoked gpg keeps waiting its input.

May 29 2025, 11:02 AM · golang, gpgme, Bug Report
gniibe added a comment to T7660: GPGME invocation by cri-o hangs on gpgme_op_verify.

Here is my observation.

May 29 2025, 9:11 AM · golang, gpgme, Bug Report

May 27 2025

werner triaged T7660: GPGME invocation by cri-o hangs on gpgme_op_verify as Normal priority.
May 27 2025, 4:29 PM · golang, gpgme, Bug Report
werner created golang.
May 27 2025, 4:29 PM