caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jonathan T Bryant <jtbryant@valdosta.edu>
To: caml-list@yquem.inria.fr
Subject: Closer on the Mysterious bug
Date: Sun, 11 Dec 2005 19:38:55 -0500 (EST)	[thread overview]
Message-ID: <4559609.1134347935847.JavaMail.jtbryant@valdosta.edu> (raw)

Everyone,

Now I've fixed the Unix_error(12, "accept, "") bug: I thought passing 0 
to select made in wait indefinitely, so I inadvertently created a race 
condition.  I set it to 0 on all of the calls and that bug disappeared. 
 Also, I'm catching all of the exceptions and printing out a message 
when I do, but they are closing as (or, for that matter, when) 
expected.  All that's left is the segfault.  It still occurs at random 
times: sometimes before any connections are established, sometimes 
after all the connections have terminated, and sometimes right in the 
middle.  Sometimes it even freezes for a moment (about 2 sec) before it 
crashes.  GDB says the segfault is comming from fdset_to_fdlist(), 
which leads me to Unix.select.  Here's the source of that C function 
since not everybody will have the same version of OCaml as me (OCaml 
3.08.3):

static value fdset_to_fdlist(value fdlist, fd_set *fdset)
{
  value l;
  value res = Val_int(0);

  Begin_roots2(l, res);
    for (l = fdlist; l != Val_int(0); l = Field(l, 1)) {
      int fd = Int_val(Field(l, 0));
      if (FD_ISSET(fd, fdset)) {
        value newres = alloc_small(2, 0);
        Field(newres, 0) = Val_int(fd);
        Field(newres, 1) = res;
        res = newres;
      }
    }
  End_roots();
  return res;
}

Any ideas?

BTW, If you need to look at my updated code, it's available at 
http://jonboy.isa-geek.com/

--Jonathan

-----------------------
--Jonathan Bryant
  jtbryant@valdosta.edu
  AIM: JonBoy3182

  OAS AAS LLS
  ZG214


                 reply	other threads:[~2005-12-12  0:39 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4559609.1134347935847.JavaMail.jtbryant@valdosta.edu \
    --to=jtbryant@valdosta.edu \
    --cc=caml-list@yquem.inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).