On Tue, Mar 10, 2026 at 05:39:20PM +0100, Peter Krempa wrote:
> On Tue, Mar 10, 2026 at 17:37:16 +0100, Peter Krempa via Devel wrote:
> > On Tue, Mar 10, 2026 at 16:21:17 +0000, Daniel P. Berrangé wrote:
> > > On Tue, Mar 10, 2026 at 05:04:15PM +0100, Peter Krempa via Devel wrote:
> > > > From: Peter Krempa <[email protected]>
> > > > 
> > > > Commit d249170bf609d2c modified the arguments of 'virNetTLSContextNew'
> > > > which has a systemtap probe point defined. This in turn meant that the
> > > > probe point needed to be modified too.
> > > > 
> > > > Unfortunately the systemtap generator doesn't handle double pointers
> > > > correctly and in fact systemtap doesn't even seem to have a possibility
> > > > to fetch a list of strings from userspace natively. This meant that an
> > > > invalid probe definition was generated:
> > > > 
> > > >   probe libvirt.rpc.tls_context_new = 
> > > > process("/usr/lib64/libvirt.so").mark("rpc_tls_context_new") {
> > > >     ctxt = $arg1;
> > > >     cacert = user_string($arg2);
> > > >     cacrl = user_string($arg3);
> > > >     *cert = $arg4;
> > > >     *keys = $arg5;
> > > >     sanityCheckCert = $arg6;
> > > >     requireValidCert = $arg7;
> > > >     isServer = $arg8;
> > > >   }
> > > > 
> > > > Leading to the following failure:
> > > > 
> > > >   # stap -ve 'probe oneshot {exit()}'
> > > >   parse error: expected literal string or number
> > > >           saw: operator '*' at 
> > > > /usr/share/systemtap/tapset/libvirt_probes-64.stp:204:3
> > > >        source:   *cert = $arg4;
> > > >                  ^
> > > >   1 parse error.
> > > > 
> > > > To address the issue declare the 'cert' and 'keys' parameters as
> > > > 'void *', we can't really do anything else as string lists aren't
> > > > supported,  which will make our generator generate correct code once
> > > > again.
> > > > 
> > > > Resolves: https://issues.redhat.com/browse/RHEL-153832
> > > > Fixes: d249170bf609d2cb89c36477b0f9ca0908f25985
> > > > Signed-off-by: Peter Krempa <[email protected]>
> > > > ---
> > > >  src/libvirt_probes.d | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > Err, I already fixed it with:
> > > 
> > >   commit cb33103c4afbce68134be112ecc5d0251e542650
> > >   Author: Daniel P. Berrangé <[email protected]>
> > >   Date:   Mon Feb 16 10:00:48 2026 +0000
> > > 
> > >     scripts: avoid matching 'char **' as string for systemtap
> > 
> > IIUC that changed '*cert = user_string($arg4)' to '*cert = $arg4', but
> > systemtap still moans about '*cert' being invalid syntax. And changing
> > the argument from 'char **' to 'char *' would feel really wrong, so
> > 'void *' seems better for a generic pointer.
> 
> Other possibility is to strip any amount of leading '*' rather than just
> 1 in the script generating the argument names.

Yeah, stripping leading * is what I /intended/ to do, but clearly
failed to remember to actually do :-(


With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|

Reply via email to