[darcs-users] fromJust error in darcs-2.0.0

Greg Holtz gh2377 at hotmail.com
Wed Apr 23 07:38:54 UTC 2008


My full configure command is just
./configure
and sometimes,
./configure --disable-mmap
and sometimes,
./configure --disable-optimize --disable-mmap

However, now that you mention file systems, I do use
zfs. I just tried creating a repository on one of my non-zfs
directories, but it gives the same error. I do try
running "darcs whatsnew" in a bunch of different directories.
I will delete the old _darcs, and create a new repository with
"darcs initialize" everywhere to see if things change. "initialize"
succeeds, but "add" "changes" "whatsnew" still fails.

solaris has dtrace, which I've run to get a count of the number
of times different syscalls have been called specifically for
the executable "darcs"

# dtrace -n 'syscall:::entry/execname=="darcs"/{@[probefunc]=count();}'
dtrace: description 'syscall:::entry' matched 235 probes
^C

  fxstat                                                            1  getrlimit                                                         1  lxstat                                                            1  mkdir                                                             1  mmap64                                                            1  pollsys                                                           1  rexit                                                             1  schedctl                                                          1  sigpending                                                        1  sysi86                                                            1  systeminfo                                                        1  lstat64                                                           2  read                                                              2  rmdir                                                             2  setcontext                                                        2  setitimer                                                         2  getpid                                                            3  rusagesys                                                         3  mprotect                                                          4  unlink                                                            4  write                                                             4  sysconfig                                                         5  open64                                                            6  fstat64                                                           7  ioctl                                                             7  sigaction                                                         9  fcntl                                                            11  brk                                                              12  lwp_sigmask                                                      14  chdir                                                            17  getcwd                                                           21  memcntl                                                          22  open                                                             27  munmap                                                           28  resolvepath                                                      28  close                                                            30  stat64                                                           64  mmap                                                            110  xstat                                                           358
A similar call to dtrace on time spent shows for the biggest offenders: (time in ns)

  munmap                                                        63078
  close                                                         69554
  resolvepath                                                  145907
  unlink                                                       154542
  open64                                                       161709
  chdir                                                        230000
  open                                                         243984
  stat64                                                       439384
  getcwd                                                       468763
  mmap                                                         558547
  xstat                                                        963136
  memcntl                                                     1583326

I got "gmake ghci" to work (after having to change something in Context.hs -- deleting the message),
but when I try to run the same situation "darcs whatsnew" via

:main whatsnew

I get a "Pattern match failure" (user error exception). I'm trying to figure out how to run this thing...

How do you tell if you're using FastPackedStrings or ByteStrings?


Date: Tue, 22 Apr 2008 22:28:01 -0700
From: dagit at codersbase.com
To: gh2377 at hotmail.com
Subject: Re: [darcs-users] fromJust error in darcs-2.0.0
CC: darcs-users at darcs.net

I hit send too fast...


What is your full configure command?  Specifically, I'm wondering if you're using the old fast packed strings or the new ByteString.  The see a few things that could each be questionable where the fromJust is failing:


*mmap could be subtly different than on other platforms
*there are several calls to unsafeInterleave functions, but often this is safe in practice
*either FastPackedStrings or ByteStrings are used here

I forgot one, I meant to mention that we call getSymbolicLinkStatus, so obviously, the system calls related to symbolic links matters here too.

Specifically, we have a case like this:
if isRegularFile fs then ...

else if isDirectory fs || (isSymbolicLink fs && dirname == ".") then ...
else return Nothing <-- This would cause your problem

I think fs should be the path of the repository.

As you can see from the logic, that if we hit the right combination of values from isRegularFile, isDirectory and isSymbolicLink we end up in the "return Nothing" case which would cause your problem.  It's not the only way to get there, though.


Is there anything special about where you're running your code or your file system?

Jason



_________________________________________________________________
Make i'm yours.  Create a custom banner to support your cause.
http://im.live.com/Messenger/IM/Contribute/Default.aspx?source=TXT_TAGHM_MSN_Make_IM_Yours
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osuosl.org/pipermail/darcs-users/attachments/20080423/893b11fd/attachment-0001.htm 


More information about the darcs-users mailing list