* Crash report: git maintenance start/stop
@ 2024-11-07 22:24 Evangeline Rome
2024-11-08 8:31 ` Patrick Steinhardt
0 siblings, 1 reply; 3+ messages in thread
From: Evangeline Rome @ 2024-11-07 22:24 UTC (permalink / raw)
To: git
What did you do before the bug happened? (Steps to reproduce your issue)
I'm sorry but i can't remember exactly. I learned about cool new feature called
maintenance and tried to apply it for every cloned local repo I have
using shell scripts. something went wrong. I'm not sure if its my fault
or not. I tried to reproduce it:
```bash
cd $(mktemp -d);
git init;
echo '# header' >> ./readme;
git add .;
git commit -m 'initial commit';
echo 'line 2' >> ./readme;
git add .;
git commit -m 'second commit';
# All commands above prepare basic repo successfully
# I initially have no timers
/sbin/systemctl --user list-timers --all;
# output:
# NEXT LEFT LAST PASSED UNIT ACTIVATES
# 0 timers listed.
# And also I initially have no cron jobs
crontab -l
# output:
# no crontab for nikel
# git maintenance start crashes first time:
GIT_TRACE=1 git maintenance start;
# output:
# 00:11:17.328757 git.c:479 trace: built-in: git maintenance start
# 00:11:17.328808 run-command.c:666 trace: run_command: systemctl
--user list-timers
# 00:11:17.328835 run-command.c:758 trace: start_command:
/sbin/systemctl --user list-timers
# 00:11:17.336026 run-command.c:666 trace: run_command: systemctl
--user list-timers
# 00:11:17.336066 run-command.c:758 trace: start_command:
/sbin/systemctl --user list-timers
# 00:11:17.342491 run-command.c:666 trace: run_command:
'H�LH��H���L9�r0H�CH�˷' -l
# free(): invalid pointer
# Aborted (core dumped)
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# !!!!!! Notice those strange symbols: 'H�LH��H���L9�r0H�CH�˷'!!!!!!
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# After the crash, git maintenance with {start,stop} fails with
# different error
# No new timers were created
/sbin/systemctl --user list-timers --all;
# output:
# NEXT LEFT LAST PASSED UNIT ACTIVATES
# 0 timers listed.
# No new cron jobs were created
crontab -l
# output:
# no crontab for nikel
# can't stop because it didn't start (?). Here you can see new error
GIT_TRACE=1 git maintenance stop;
# output:
# After that running git maintenance start fails with different error:
# 00:13:48.005648 git.c:479 trace: built-in: git maintenance stop
# error: another process is scheduling background maintenance
# restarting also doesn't work because previous start created lock file
# `error: another process is scheduling background maintenance` is forever
GIT_TRACE=1 git maintenance start;
# output:
# 00:14:31.483902 git.c:479 trace: built-in: git maintenance start
# 00:14:31.483951 run-command.c:666 trace: run_command: systemctl
--user list-timers
# 00:14:31.483990 run-command.c:758 trace: start_command:
/sbin/systemctl --user list-timers
# 00:14:31.491288 run-command.c:666 trace: run_command: systemctl
--user list-timers
# 00:14:31.491320 run-command.c:758 trace: start_command:
/sbin/systemctl --user list-timers
# error: another process is scheduling background maintenance
# fatal: failed to set up maintenance schedule
# No new timers were created
/sbin/systemctl --user list-timers --all;
# output:
# NEXT LEFT LAST PASSED UNIT ACTIVATES
# 0 timers listed.
# No new cron jobs were created
crontab -l
# output:
# no crontab for nikel
# After first crash it forever fails with "another process is schedul..."
# until I delete lock file
rm ./.git/objects/schedule.lock;
# then `GIT_TRACE=1 git maintenance start` is able to crash with the same
# useless error again
# Here are the most detailed logs I know how to create:
GIT_TRACE=1 gdb --args git maintenance start --scheduler=systemd-timer;
# output:
# GNU gdb (GDB) 15.2
# Reading symbols from git...
#
# (gdb) run
#
# Starting program: /usr/bin/git maintenance start --scheduler=systemd-timer
# [Thread debugging using libthread_db enabled]
# Using host libthread_db library "/usr/lib/libthread_db.so.1".
# 00:32:49.043634 git.c:479 trace: built-in: git maintenance start
--scheduler=systemd-timer
# 00:32:49.043720 run-command.c:666 trace: run_command: systemctl
--user list-timers
# 00:32:49.043760 run-command.c:758 trace: start_command:
/sbin/systemctl --user list-timers
# [Detaching after fork from child process 30180]
# 00:32:49.053174 run-command.c:666 trace: run_command:
'H�LH��H���L9�r0H�CH�˷' -l
# free(): invalid pointer
#
# Program received signal SIGABRT, Aborted.
# __pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
# 44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
#
# (gdb) where
#
# #0 __pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
# #1 0x00007ffff7d7c463 in __pthread_kill_internal
(threadid=<optimized out>, signo=6) at pthread_kill.c:78
# #2 0x00007ffff7d23120 in __GI_raise (sig=sig@entry=6) at
../sysdeps/posix/raise.c:26
# #3 0x00007ffff7d0a4c3 in __GI_abort () at abort.c:79
# #4 0x00007ffff7d0b354 in __libc_message_impl
(fmt=fmt@entry=0x7ffff7e992f5 "%s\n") at
../sysdeps/posix/libc_fatal.c:132
# #5 0x00007ffff7d86765 in malloc_printerr
(str=str@entry=0x7ffff7e97082 "free(): invalid pointer") at
malloc.c:5772
# #6 0x00007ffff7d88c4c in _int_free (av=<optimized out>,
p=p@entry=0x555555822b16 <strbuf_add+38>, have_lock=have_lock@entry=0)
at malloc.c:4507
# #7 0x00007ffff7d8b5ce in __GI___libc_free
(mem=mem@entry=0x555555822b26 <strbuf_add+54>) at malloc.c:3398
# #8 0x00005555555d3ec8 in is_crontab_available () at builtin/gc.c:2349
# #9 0x00005555555dc248 in update_background_schedule
(opts=opts@entry=0x7fffffffd0cc, enable=enable@entry=1) at
builtin/gc.c:2897
# #10 0x00005555555dc46d in maintenance_start (argc=<optimized out>,
argv=<optimized out>, prefix=<optimized out>) at builtin/gc.c:2937
# #11 0x00005555555cf61f in cmd_maintenance (argc=<optimized out>,
argv=0x7fffffffda20, prefix=0x0, repo=<optimized out>) at
builtin/gc.c:2984
# #12 0x000055555555e454 in run_builtin (p=0x55555596efd0
<commands.lto_priv+1584>, argc=3, argv=0x7fffffffda20,
repo=0x55555597de40 <the_repo.lto_priv>) at
/usr/src/debug/git/git-2.47.0/git.c:483
# #13 handle_builtin (argc=3, argv=0x7fffffffda20) at
/usr/src/debug/git/git-2.47.0/git.c:749
# #14 0x000055555555ead9 in run_argv (argcp=0x7fffffffd7cc,
argv=0x7fffffffd7f0) at /usr/src/debug/git/git-2.47.0/git.c:819
# #15 0x00005555555597eb in cmd_main (argc=<optimized out>,
argv=<optimized out>) at /usr/src/debug/git/git-2.47.0/git.c:954
# #16 main (argc=<optimized out>, argv=<optimized out>) at
/usr/src/debug/git/git-2.47.0/common-main.c:64
#
# (gdb) quit
```
I hope it would be helpful. Let me know if you need anything else
What did you expect to happen? (Expected behavior)
`git maintenance start` doesn't crash.
What happened instead? (Actual behavior)
`git maintenance start` crashes.
What's different between what you expected and what actually happened?
Crashing vs not crashing.
[System Info]
git version:
git version 2.47.0
cpu: x86_64
no commit associated with this build
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
libcurl: 8.10.1
OpenSSL: OpenSSL 3.3.2 3 Sep 2024
zlib: 1.3.1
uname: Linux 6.11.6-arch1-1 #1 SMP PREEMPT_DYNAMIC Fri, 01 Nov 2024
03:30:41 +0000 x86_64
compiler info: gnuc: 14.2
libc info: glibc: 2.40
$SHELL (typically, interactive shell): /bin/bash
[Enabled Hooks]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Crash report: git maintenance start/stop
2024-11-07 22:24 Crash report: git maintenance start/stop Evangeline Rome
@ 2024-11-08 8:31 ` Patrick Steinhardt
2024-11-08 12:10 ` Evangeline Rome
0 siblings, 1 reply; 3+ messages in thread
From: Patrick Steinhardt @ 2024-11-08 8:31 UTC (permalink / raw)
To: Evangeline Rome; +Cc: git
On Fri, Nov 08, 2024 at 01:24:29AM +0300, Evangeline Rome wrote:
> What did you do before the bug happened? (Steps to reproduce your issue)
>
> I'm sorry but i can't remember exactly. I learned about cool new feature called
> maintenance and tried to apply it for every cloned local repo I have
> using shell scripts. something went wrong. I'm not sure if its my fault
> or not. I tried to reproduce it:
This very much reads like the report at [1]. If so, the bug has been
fixed via c1662a00b6 (Merge branch 'ps/maintenance-start-crash-fix',
2024-10-18).
Patrick
[1]: https://lore.kernel.org/git/CAG=Um+0mJW-oAH+YLC3dWEU64JwS-zMkkTiFWYBe4g6HMbe-iA@mail.gmail.com/
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Crash report: git maintenance start/stop
2024-11-08 8:31 ` Patrick Steinhardt
@ 2024-11-08 12:10 ` Evangeline Rome
0 siblings, 0 replies; 3+ messages in thread
From: Evangeline Rome @ 2024-11-08 12:10 UTC (permalink / raw)
Cc: git
On Fri, Nov 8, 2024 at 11:32 AM Patrick Steinhardt <ps@pks.im> wrote:
>
> On Fri, Nov 08, 2024 at 01:24:29AM +0300, Evangeline Rome wrote:
> > What did you do before the bug happened? (Steps to reproduce your issue)
> >
> > I'm sorry but i can't remember exactly. I learned about cool new feature called
> > maintenance and tried to apply it for every cloned local repo I have
> > using shell scripts. something went wrong. I'm not sure if its my fault
> > or not. I tried to reproduce it:
>
> This very much reads like the report at [1]. If so, the bug has been
> fixed via c1662a00b6 (Merge branch 'ps/maintenance-start-crash-fix',
> 2024-10-18).
>
> Patrick
>
> [1]: https://lore.kernel.org/git/CAG=Um+0mJW-oAH+YLC3dWEU64JwS-zMkkTiFWYBe4g6HMbe-iA@mail.gmail.com/
Oh, yeah, I tried compiling `next` branch and it works fine there. I
guess I'll have to wait until new git release will be distributed
through Arch Linux repos. Thank you, for pointing me out, and thanks
to the people involved in fixing it! :)
(Patrick, sorry if you get duplicate email, I'm new to mailing lists)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-11-08 12:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-07 22:24 Crash report: git maintenance start/stop Evangeline Rome
2024-11-08 8:31 ` Patrick Steinhardt
2024-11-08 12:10 ` Evangeline Rome
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).