rr-debugger / rr-debugger/rr

Assertion while recording `ret == -ENOENT || ret == -ENODEV || ret == -ENOTBLK || ret == -EINVAL' failed to hold. unknown quotactl(0x5805)

Open
#2,013 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
10.7k
Forks
662
Avg merge
2d 3h
Merged PRs (30d)
2

Description

Me again unfortunately with another smbd issue. Recording fails with this assertion failure (using latest git 1022e348 ):

[FATAL /home/aaptel/prog/rr/rr.git/src/record_syscall.cc:5009:rec_process_syscall_arch() errno: SUCCESS] 
 (task 28255 (rec:28255) at time 61003)
 -> Assertion `ret == -ENOENT || ret == -ENODEV || ret == -ENOTBLK || ret == -EINVAL' failed to hold.  unknown quotactl(0x5805)
Launch gdb with
  gdb '-l' '10000' '-ex' 'target extended-remote :28255' /tmp/smb/sbin/smbd

Steps to reproduce:

git clone git://git.samba.org/samba.git samba
cd samba
./buildtools/bin/waf configure -C -j8 \
                                    --disable-cups --enable-selftest --with-libarchive  \
                                    --enable-debug --picky-developer \
                                    --enable-developer \
                                    --bundled-libraries=ALL \
                                    --prefix=/tmp/smb/ \
                                    --localstatedir=/tmp/smbstate
./buildtools/bin/waf build -j8
./buildtools/bin/waf install
rm -rf /tmp/share
mkdir -p /tmp/share
chmod 777 /tmp/share
cat <<EOF > /tmp/smb/etc/smb.conf
[global]
logging = ringbuf
log level = 0
 
[share]
path = /tmp/share
read only = no
guest ok = yes
EOF
for i in $(seq 100 9000); do
    echo ABC${i}DEF > /tmp/share/${i}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
done

as root:

rr record /tmp/smb/sbin/smbd -i

in other shell:

/tmp/smb/bin/smbclient //localhost/share -U% -c ls

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/record_syscall.cc at the assertion near line 5009 and inspect how the recorder handles the unknown quotactl(0x5805) result. Reproduce with the provided Samba setup and rr record command; done means the recording no longer aborts on this syscall and the relevant behavior is covered by the project's existing validation.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
devtools, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.