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