Hello Yibin and Frank,

On 19/09 05:03, Z Y wrote:
> The global variable is ngx_cycle in openresty/nginx, openresty is actually
> nginx with a lua extension.
> The steps to reproduce this bug is as  follows, the scripts used are
> attached:
> 
> > wget https://openresty.org/download/openresty-1.19.3.2.tar.gz
> > tar -xf openresty-1.19.3.2.tar.gz
> > cd openresty-1.19.3.2
> > ./configure --with-cc-opt="-O0 -g"
> > make -j12
> > make  install
> > /usr/local/openresty/bin/resty -j off nest-call.lua 100000000000 &
> > stap --disable-cache ./openresty.stp -x $(pgrep -n nginx) -v

[...]

I can reproduce the regression. The openresty.stp script provided by
Yibin works fine with Linux 5.10 from Debian Bullseye, while it fails
with the 5.19 kernel from testing/sid. In both cases I've used systemtap
4.7-1 from testing/sid.

Here's the output with the Bullseye kernel:

    $ uname -a
    Linux ariel 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64 
GNU/Linux

    $ sudo stap --disable-cache ~/Downloads/openresty.stp -x $(pgrep -n nginx)
    WARNING: Kernel function symbol table missing [man warning::symbols]
    WARNING: nginx pid 3224 target 3224
    WARNING: ngx_cycle 0x55caf7ef1b60
    WARNING: module_index 54
    WARNING: lmcf 0x55caf7f048b8
    WARNING: ngx lua 0x7fcfe451b380

And the failure with with the 5.19 kernel from testing/sid:

        $ uname -a
        Linux ariel 5.19.0-1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.19.6-1 
(2022-09-01) x86_64 GNU/Linux

        $ sudo stap --disable-cache ~/Downloads/openresty.stp -x $(pgrep -n 
nginx)
        WARNING: Kernel function symbol table missing [man warning::symbols]
        warning: the compiler differs from the one used to build the kernel
        The kernel was built by: gcc-11 (Debian 11.3.0-5) 11.3.0
        You are using:           gcc-11 (Debian 11.3.0-6) 11.3.0
        WARNING: nginx pid 5978 target 5978
        ERROR: read fault [man error::fault] at 0x5602ca215380 near operator 
'@var' at /home/ema/Downloads/openresty.stp:18:17
        WARNING: Number of errors: 1, skipped probes: 0
        WARNING: /usr/bin/staprun exited with status: 1
        Pass 5: run failed.  [man error::pass5]
        Tip: /usr/share/doc/systemtap/README.Debian should help you get started.

I've tried booting the 5.19 kernel with all possible values for
preempt=, namely "none", "voluntary", and "full" to no avail.

The 5.19 kernel has this to say when the script fails:

    [   60.484129] kprobes: kprobe jump-optimization is disabled. All kprobes 
are based on software breakpoint.
    [   60.548807] stap_3811 (openresty.stp): systemtap: 4.7/0.187, base: 
ffffffffc1153000, memory: 388data/52text/129ctx/262246net/324alloc kb, probes: 2

Reply via email to