[darcs-users] darcs patch: Add --debug-http flag to enable curl and... (and 3 more)

Dmitry Kurochkin dmitry.kurochkin at gmail.com
Thu Aug 14 04:43:36 UTC 2008


On Thu, Aug 14, 2008 at 4:43 AM, Gwern Branwen <gwern0 at gmail.com> wrote:
> On 2008.08.13 17:17:44 +0400, Dmitry Kurochkin <dmitry.kurochkin at gmail.com> scribbled 1.9K characters:
>> On Wed, Aug 13, 2008 at 4:58 PM, Gwern Branwen <gwern0 at gmail.com> wrote:
> ,,,
>> > The bad news though is that this seems to completely break profiling support under GHC 6.8.2.
>> >
>> > That is,
>> >
>> > $ make clean && ./configre --prefix=/home/gwern/bin --enable-profile --with-curl-pipelining && make install -j10
>> >
>> > leads to:
>> >
>> > gwern at craft:16499~>http_proxy="" HTTP_PROXY="" =darcs get http://allmydata.org/source/tahoe/trunk                     [ 8:56AM]
>> >
>> > darcs failed:  Not a repository: http://allmydata.org/source/tahoe/trunk (RTS doesn't support multiple OS threads (use ghc -threaded when linking))
>> >
>> > This may or may not be a 6.8.2 specific issue, being unable to compile with profiling and threading, but it's definitely a problem of interest to me. If it got fixed in 6.8.3, maybe we don't want to do anything (but we'd still need some doc mentions, I think).
>>
>> I never did profiling but looks like the problem is that URL module
>> now uses forkOS (and blocks in select() there for curl at least). I
>> have found this in GHC 6.8.3 release notes[1]:
>
> Actually, while we're on the topic: why does URL.hs now use forkOS? Darcs uses forkIO, usually, which is the standard Haskell practice. It can't be for performance: I replaced forkOS with forkIO and tested it with 4 darcs gets of the Tahoe repo, and they all clocked in at 24-27 minutes (the same as with forkOS).

That is because we do foreign calls that block. AFAIK if we use
unbound threads (forkIO) all haskell threads are halt during blocking
syscalls from foreign functions. And that is not what we want.

Regards,
  Dmitry

>
>> # You can now use the -prof and -threaded flags together, although you
>> cannot also use +RTS -N2.
>>
>> Does this fix the problem? There is no GHC 6.8.3 in debian at the
>> moment. And I do not feel like compiling it by hand.
>>
>> Regards,
>>   Dmitry
>>
>> [1] http://www.haskell.org/ghc/docs/6.8.3/html/users_guide/release-6-8-3.html
>
> That may've been what I'm thinking of. I don't have 6.8.3 in Ubuntu either. So what's the thing to do? Just leave it in the documentation for that rare developer who wants to profile? ('Warning, threading and profiling are mutually exclusive in 6.8.2 - that means pipelining too.') Add some (more) configure checks?
>
> --
> gwern
> SDIS 36800 counter watchers WANK captain CTP GNU Keyer my
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> iD8DBQFIo3+zvpDo5Pfl1oIRCthiAJ9SVUynxvfrh7crmQkAQHgtnhgSbACfQ9Sd
> U/uD2/uL8/i/iqKY0GQUzBo=
> =9TmN
> -----END PGP SIGNATURE-----
>
>


More information about the darcs-users mailing list