Re: Segfault while transfering

Julien David <[email protected]> Thu, 23 May 2024 05:56:53 -0700 (PDT)
Newsgroups gmane.network.unison.general
Message-ID <[email protected]>
Hello

OS is Debian 12 with 32G RAM
There are around 250k files to transfer
It goes a bit more further after upgrade to 2.53.5 and changed settings but 
still crash around 31% (14G over 47)
htop do not show any memory pic
Le jeudi 23 mai 2024 à 14:31:44 UTC+2, Greg Troxel a écrit :

> Julien David <[email protected]> writes:
>
> > I setup a new replica on quite large directory (~50G) and got a segfault 
> on 
> > the first occurence.
> >
> > Here is the log:
> >
> > 2024-05-23T11:43:16.592072+00:00 web1-1 kernel: [27651508.074760] 
> > unison[187262]: segfault at 7fff04c04fc8 ip 00000000005182c4 sp 
> > 00007fff04c04fb0 error 6 in unison[400000+183000] likely on CPU 6 (core 
> 0, 
> > socket 0)
> > 2024-05-23T11:43:16.621810+00:00 web1-1 kernel: [27651508.100149] Code: 
> 01 
> > 00 00 00 48 81 ec 28 08 00 00 64 48 8b 04 25 28 00 00 00 48 89 84 24 18 
> 08 
> > 00 00 31 c0 48 81 fe 01 01 00 00 b8 00 01 00 00 <48> 89 4c 24 18 4c 0f 
> 43 
> > e8 48 d1 ff 48 d1 ea 48 89 fd 49 89 d7 45
>
> We are very aware of "unison is ungraceful when running out of memory"
> but that has generally not manifested as segfaults.
>
> In theory ocaml code should not do this, absent a bug in the ocaml
> compiler. (While I don't think it's very likely, you could also have a
> hardware issue.)
>
> But, there is C code in unsion.
>
> My belief, not super well founded, is that unison maintains per-file
> data structures, but that the total size of data is not so relevant. So
> the question is perhaps how many files you are syncing, vs total size.
> But perhaps something else is going on.
>
> > root@itc-rbx-web1-1:/var/log/unison# unison -version
> > unison version 2.53.4 (ocaml 4.14.1)
>
> Actually 2.53.5 is out, since May 6. I am not claiming it will be
> different, but it would be great if you could upgrade and debug with
> that.
>
> > Transfer is over ssh with the following options:
> >
> > times = true
> > ignore = Path .ssh
> > ignore = Path .unison
> > log = true
> > logfile = /var/log/unison/source.log
> > maxthreads = 10
>
> You didn't mention OS, how much RAM you have, and what your data and
> stack sizes are. I would suggest two paths:
>
> see if you can find the edges of the bad behavior, by
> - setting times=false
> - setting maxthreads=1
> - watching with ps in a fairly tight loop to see the mem/rss of the
> process before it crashes
> - turn up data segment size (see ulimit(1)) and stack
> - sync less
>
> run under gdb and see if you can get a stack trace. You might have to
> build it yourself and enable some kind of debugging symbols
>

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].