Assertion while recording `ret == -ENOENT || ret == -ENODEV || ret == -ENOTBLK || ret == -EINVAL' failed to hold. unknown quotactl(0x5805)
Open
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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