Software Error 2 )

  • [Tue Jan 3 19:37:13 2006] D:\Distr\CodeStriker\codestriker-1.9.1\cgi-bin\ open3: IO::Pipe: Can't spawn-NOWAIT: No such file or directory at D:/Distr/CodeStriker/codestriker-1.9.1/bin/../lib/Codestriker/Repository/ line 119 Content-type: text/html
    Software error:
    open3: IO::Pipe: Can't spawn-NOWAIT: No such file or directory at D:/Distr/CodeStriker/codestriker-1.9.1/bin/../lib/Codestriker/Repository/ line 119

    For help, please send mail to this site's webmaster, giving this error message and the time and date of the error.


    My Config:
    # -*-perl-*-
    # Configuration file for

    # Example of an SQL Server ODBC database URL.
    $db = 'DBI:ODBC:Codestriker';

    # Database user.
    $dbuser = 'CodestrikerLogin';

    # Database password.
    $dbpasswd = 'g3wq76up';

    # Location of the mailing host.  This is used when sending out codestriker
    # comments.
    $mailhost = 'localhost';

    # Indicate whether to try and compress output if the client browser
    # supports it.  This can make a tremendous difference in bandwidth,
    # especially over slow links.
    $use_compression = 0;

    # Location of gzip.  Gzip is used only if you don't have Compress::Zlib
    # installed.  Note, if running with mod_perl, you _must_ have Compress:Zlib
    # installed.  If gzip is not available, this can be set to "".
    $gzip = '/bin/gzip';

    # Location of the svn binary.
    $svn = 'C:/Program Files/Subversion/bin/svn.exe';

    # If codestriker is installed differently to that described in the README file
    # (for example on the sourceforge servers), it may be necessary to explicitly
    # specify the location of the codestriker_css as a URL.
    $codestriker_css = '';

    # Valid repositories which may be selected at the create topic screen.
    # The order shown here is the order presented in the option list.  Most
    # deployments will only require a single repository to be specified.
    # Comment out / modify entries appropriate for your deployment.
    # If this list is empty it won't be possible to view the entire contents of a
    # file before the proposed change and/or after. All of the places
    # in the application that ask for, or display repository information will
    # be hidden and lastly, it will be impossible to make a diff review topic
    # on files that already checked in.
    @valid_repositories =
         'svn://localhost/Big Brother',
         'svn://localhost/Big Brother'

    # A mapping of repositories to filename viewers.  Examples of such systems
    # would be CVSweb and ViewCVS, for local repositories.  Mappings are
    # not required for remote CVSweb and ViewCVS repositories, as they are
    # viewers themselves.  When viewing reviews, links from filenames will be
    # mapped to these URLs, to obtain revision log information for that file.
    $file_viewer =
        '/home/sits/cvs' => 'http://localhost/cgi-bin/cvsweb.cgi'

    # Exclude these file types from review topics.  
    # You will generally want to exclude any non-human-readable files.
    @exclude_file_types = ('rtf', 'doc', 'gif', 'bmp', 'jpeg', 'jpg', 'mdb',
                   'ppt', 'vsd', 'xls', 'zip', 'tgz', 'tar', 'gz',
                   'opt', 'aps', 'ncb', 'a', 'so', 'dll', 'lib',
                   'exe', 'png', 'pdf', 'bin', 'out', 'ld', 'fm',
                   'indd', 'wav', 'o', 'obj', 'mpp', 'vsw', 'jfif',
                   'tif', 'tiff', 'xbm', 'fnt', 'ttf', 'pfm', 'pfb',
                   'eps', 'wpj', 'sxi');

    # The number of problems found per line drops if the size of the
    # topic is too large. A common inspection pitfall is for authors to
    # attempt to review too much material and then miss problems.
    # These two options allow the Codestriker administrator to limit
    # the length of the topics. Topics that have more lines than
    # $maximum_topic_size_lines are rejected when they are created.
    # Topics that are larger than $suggested_topic_size_lines generate
    # a warning displayed in the topic page, but are accepted into the
    # system. Codestriker measures that length of the topic by counting
    # the number of lines in the topic text.
    # The codestriker default of not enforcing any limits is specified by
    # settings either option to an empty string. If you are not sure
    # what a reasonable limit would be, start with a suggested_topic_size_lines
    # set to 350, and adjust with experience.
    $maximum_topic_size_lines = '';
    $suggested_topic_size_lines = '';

    # The default viewing mode to use in the URL when creating a topic.  Can
    # values should not be changed.
    $NORMAL_MODE = 0;

    $default_topic_create_mode = $COLOURED_MODE;

    # The default line break viewing mode to use in the URL when viewing a
    # topic.  Can be either $LINE_BREAK_NORMAL_MODE or $LINE_BREAK_ASSIST_MODE.
    # Using $LINE_BREAK_ASSIST_MODE indicates that extra line breaks may be
    # used in the topic display if the review has very long code lines.  Using
    # $LINE_BREAK_NORMAL_MODE will ensure that the display matches the line
    # breaks present in the code.  The line break mode can also be changed
    # dynamically in the view topic screen.  There is usually no need to
    # change this setting unless you regularly review code with very long
    # lines.

    $default_topic_br_mode = $LINE_BREAK_NORMAL_MODE;

    # When displaying a topic, if this value is -1, then all files in the
    # topic are displayed in the one page (default old Codestriker
    # behaviour).  If the value is 0, then only the first file is shown,
    # with links to display the other files.  This is useful for those
    # deployments that review a large amount of code.
    $default_file_to_view = -1;

    # List of valid topic states.  Note these values are mapped to the database
    # depending on their position in the list.  ie, Open -> 0, Closed -> 1, etc.
    # There is no problem added new states dynamically, or changing the textual
    # names.  Note, the initial topic state must be the first element.  If
    # the 'Obsoleted' state is removed, then it will not be possible to obsolete
    # topics.  If the 'Deleted' state is removed, then it will not be possible
    # to delete topics.
    @topic_states = ('Open', 'Closed', 'Committed', 'Obsoleted', 'Deleted');

    # Which states (in topic_states, above) represent a 'readonly' state.
    # If a topic is in a readonly state, then certain activities are disabled, such
    # as adding new comments, editing the metrics of existing comments, etc.
    @readonly_states = ('Closed', 'Committed', 'Obsoleted', 'Deleted');

    # Indicate if topics can be listed/searched.  Turning this to false can be
    # useful for "anonymous" installations of codestriker.
    $allow_searchlist = 1;

    # The following controls project configuration.  Each Codestriker topic is
    # a member of a specific project.  Uncomment the option you want
    # below.  Note the textual state names below cannot be changed.

    # Default option, projects are enabled, but they have no state
    # changing operations (ie, projects are always in state 'Open').
    @project_states = ('Open');

    # Don't use projects at all.  Effectively, an implicit "default
    # project" is created and associated with all topics behind the scenes.
    # @project_states = ();
    # Allow for projects to be closed.  Closing a project will
    # not allow new topics to be created in that project.
    # @project_states = ('Open', 'Closed');
    # Allow for projects to be deleted.  This is potentially a dangerous
    # option to allow, as deleting a project will delete all of its member
    # topics as well.  Use with caution.
    # @project_states = ('Open', 'Deleted');
    # Allow for projects to be closed and deleted.  Use with caution.
    # @project_states = ('Open', 'Closed', 'Deleted');

    # If true, don't display any email addresses in their true form, but
    # truncate them, to beat SPAM harvesters.
    $antispam_email = 0;

    # If comments_sent_to_topic_author is true, codestriker will send
    # out email to the topic owner and when a comment is added. If this
    # option is false, no email will be sent the topic owner.
    # If comments_sent_to_commenter is set to true, codestriker will
    # blind cc (bcc) the comment author on all comments. The preceding
    # comments_sent_to_topic_author must be true in order for the blind
    # cc of emails to be enabled.
    # If topic_state_change_sent_to_reviewers is set to true, codestriker
    # will send email to the reviewer list when a topic state is changed.
    # Emails about each comment may not be needed if a meeting
    # is planned to discuss the topic. If the comment submitter specifies
    # a cc user, an email is always sent out, regardless of any email
    # settings.
    $email_send_options =
        comments_sent_to_topic_author => 1,
        comments_sent_to_commenter => 0,
        topic_state_change_sent_to_reviewers => 0

    # Default width of tabs.  Most developers expect this to be 8, but
    # some expect to see 4.  This is also stored in the user's cookie, and
    # can be changed dynamically on the view topic screen.
    $default_tabwidth = 8;

    # Bug database to update.  Currently, Bugzilla and Flyspray are
    # supported, but it is straight-forward to support other bug
    # databases.  To enable Bugzilla, set $bug_db to "bugzilla", and set
    # the following parameters to your setup.  To enable Flysprat, set
    # $bug_db to "flyspray", and set the relevant parameters.
    # if the $bug_db is an empty string, all bug-tracking related
    # features will be disabled.

    $bug_db = '';
    #$bug_db = 'bugzilla';
    #$bug_db = 'flyspray';

    # Bugzilla database connection details.
    #$bug_db_host = 'localhost';
    #$bug_db_name = 'bugs';
    #$bug_db_password = 'bugs_password';
    #$bug_db_dbname = 'bugs';
    #$bug_db_user_id = '2';

    # Flyspray database connection details
    #$flyspray_db_host = 'localhost';
    #$flyspray_db_name = 'flyspray';
    #$flyspray_db_password = 'flyspray_password';
    #$flyspray_db_dbname = 'flyspray_dev';
    #$flyspray_db_user_id = 50;

    # The URL to the bug tracking system.  The bug number is appended to the
    # end of this string when URLs are generated.  This can be left blank if
    # there is no need for bug-tracking integration.  Below are some example
    # URLs for Bugzilla and Flyspray.
    $bugtracker = '';
    #$bugtracker = 'http://localhost.localdomain/bugzilla/show_bug.cgi?id=';
    #$bugtracker = '/flyspray_dev/?do=details&id=';

    # LXR database.  Each repository can be optionally mapped to a
    # different LXR deployment.  If a repository has an associated LXR
    # mapping, then create a new entry where the repository string is the
    # key, and the value is another map, where "db" is the LXR database
    # URL, "user" is the database user, "password" is the data password,
    # and "url" is the base LXR URL for viewing where an identifier is
    # defined/used.
    $lxr_map =
    #    '/home/sits/cvs' => { db => 'DBI:Pg:dbname=lxr',
    #              user => 'lxr',
    #              password => '',
    #              url => 'http://localhost.localdomain/lxr/ident?i='
    #            },
    #     'svn:' =>
    #                        { db => 'DBI:Pg:dbname=lxr2',
    #              user => 'lxr',
    #              password => '',
    #              url => 'http://localhost.localdomain/lxr2/ident?i='
    #            }

    # Each comment thread (or issue) that is created against a specific
    # code line in Codestriker can have a configurable number of
    # user-defined metrics recorded against it.
    # Every site has their own requirements, below are a number of example
    # configurations.  The "name" attribute refers to the name of the
    # metric being recorded.  The "values" attribute is a list of values
    # that this metric can be assigned to.  The "default_value" attribute
    # is optional, and indicates what the default value of the metric is
    # assigned to.  If this attribute is not specified, then the user will
    # be required to specify a value for a metric when creating a new
    # comment thread.  This is recommended, so that users think about what
    # these values should be, rather than blindly accepting default
    # values.  For the "Status" metric below however, it is recording the
    # "state" of the thread, so an initial state of "Submitted" is reasonable.
    # For the other metrics below, an initial value makes no sense.
    # Metric items can have an optional show_on_main_page list that will
    # force the numbers of comments with the metric settings to be reported
    # on the main page of codestriker.
    $comment_state_metrics =
          { name             => 'Status',
        values           => ['Submitted', 'Invalid', 'Completed'],
        default_value    => 'Submitted',
        show_on_mainpage => ['Submitted' ]

    # Two metrics defined: Status and Type.
    #$comment_state_metrics =
    #    [
    #      { name=>'Status', values=>['Submitted', 'Invalid', 'Completed'],
    #                    default_value=>'Submitted' },
    #      { name=>'Type', values=>['Style', 'Minor', 'Major', 'Severe'] }
    #    ];

    # Four metrics defined: Status, Level, Mode and Type.
    #$comment_state_metrics =
    #    [
    #      { name=>'Status', values=>['Submitted', 'Invalid', 'Completed'],
    #                    default_value=>'Submitted' },
    #      { name=>'Level', values=>['Major', 'Minor'] },
    #      { name=>'Mode', values=>['Missing', 'Wrong', 'Unclear', 'Suggestion'] },
    #      { name=>'Type', values=>['Logic', 'Data Handling', 'Interface',
    #                   'Error Handling', 'Performance', 'Comments',
    #                   'Standards'] }
    #    ];
    # Case where no comment thread metrics are to be used.
    #$comment_state_metrics = [];

    # Allows you to override the default title of "Codestriker %version%".
    # $title = "Codestriker $Codestriker::VERSION";

    # This options configures the metric support in codestriker. You have
    # the following options:
    # $metric_config = "none", "basic", "all", "metric name, metric name, etc"
    # "none" - turns off all extra metric support in the application. The
    # metric page will only display and manage data that is strictly
    # required to perform the review.  Codestriker will not require any
    # addition data input from the reviewers and authors.  This is the
    # default. However, you still get basic data like how many topics are
    # being created and how problems are being found.
    # "basic" - Turns on the metrics that are considered to be essential
    # for a metric program. It will require that reviewers and authors
    # enter the time spent reviewing the topic, the time spent in the
    # review meeting, and the time spent preparing for the review. The
    # metric selection assumes that you are following a formal review
    # process with a preparation meeting, and a defect review meeting.
    #   kickoff time - time spent preparing for the review
    #   checking time - time spent actually reviewing the topic.
    #   logging meeting duration - the time spent in the logging meeting.
    # "all" - Turns on all of the metrics that one could possibly want to
    # track. The list of metrics is from the book "Software Inspection" by
    # Gilb and Graham.  You should probably not use this unless you are
    # using a formal process that is well established. You may want to
    # enable this temporally to get a idea of the types of metrics that
    # are supported.
    # "name,name" - Lastly, you can pick and chose what metrics you would
    # like to enable.  just list the metric names in a comma separated
    # list. You can see all of the build in metrics in the
    # lib/ file. For example, if you don't hold a kick off
    # meeting, and but do hold a logging meeting, the basic option will not
    # quit fit. You should set the $metric_config as:
    # $metric_config = "checking time,logging meeting duration".
    # If you don't like our choices of metrics, the names, descriptions,
    # etc feel free to edit the lib/ It contains
    # documentations on how to add your own metrics into codestriker. It
    # is easy to do, and does not require any coding.

    $metric_config = "none";

    • David Sitsky
      David Sitsky

      This is a bug in 1.9.1 and will be fixed in 1.9.2 in the next couple of weeks.

      Check out  to see how to fix this issue.

      • David Sitsky
        David Sitsky

        The URL is fine actually.  Make sure you have the entire URL, up to the group_id=41136 ending.  If you still have problems, go to the bugs section of Codestriker and search for "[ 1382454 ] open3 bug on Win32". 

        It has a new version of attached to the bug, which should fix your problem.

        • Michael Dunn
          Michael Dunn

            I tried applying the patch and am still getting the same error. 

          I am running:

          Windows XP

          Apache 2.0

          D:\Perl>perl -V
          Summary of my perl5 (revision 5 version 8 subversion 7) configuration:
              osname=MSWin32, osvers=5.0, archname=MSWin32-x86-multi-thread.


          BTW - Great product!!!  Looking forward to using it.


          • David Sitsky
            David Sitsky

            Yes, that patch doesn't show the fix correctly.  I have written a proper fix for the problem.  I'm getting somebody to test it now, once that is ready, I'll post it here.

            • David Sitsky
              David Sitsky

              I'm still waiting for Jason to try it out.  If you want to give it a go yourself, try downloading the updated module from here:


    • Thanks, btw. this is not valid URL

    • Michael Dunn
      Michael Dunn

      Hi David,
        I'd be glad to test it as well... if you want to post it here.

      • David Sitsky
        David Sitsky

        I can't attach the file to this forum, but you can download the text via the following URL.  Let me know how you go:\*checkout*/codestriker/codestriker/lib/Codestriker/Repository/

        I have to warn you though, it is completely untested.  Jason, the other developer was going to do the testing, since he has Subversion setup on his machine.

        Anyway, let me know how you go.

    • Michael Dunn
      Michael Dunn

        Thanks for you efforts on this issue.  I am still getting the same error.

    • Hi, All!
      What about fix?

      Of course I can test it.

    • Is anybody alive here?

      • David Sitsky
        David Sitsky

        Hi there,

        Please try downloading this again, I suspect the viewcvs mirrors were not synced with CVS when you tried it.  Please let me know if this fixes your problem, or if you get a different error.\*checkout*/codestriker/codestriker/lib/Codestriker/Repository/


        • Michael Dunn
          Michael Dunn

          I am still seeing the same error as before:

          Software error:
          open3: Can't close: Bad file descriptor at D:/codestriker-1.9.1/bin/../lib/Codestriker/Repository/ line 64

    • David Sitsky
      David Sitsky

      Hi Mike,

      I sent you an email message, but maybe you don't read your SF email.  The "Bad file descriptor" error message is different to the original message posted on this forum.  have you always had this error message?

      Are you running Codestriker with mod_perl or CGI?  try running as CGI.  I also onder if Apache 2 is causing us issues - any chance you could try it with apache 1?


      • Michael Dunn
        Michael Dunn

        I downgraded to Apache 1.3

        With CGI-Bin, it works!!!!

        With mod_perl, I am getting the following error:
        open3: Can't call method "close" on an undefined value at d:/Perl/lib/IPC/ line 341. with the latest

        Thanks for your help - I would like to get the mod_perl version to work - but I can live without it for now.


        • David Sitsky
          David Sitsky

          Just curious - does it work with Apache2 + CGI?  That will be really interesting to know.  Damn - so we are seeing some weird mod_perl/win32 issue here.  We don't see this on *NIX machines.

          Also - this should have happened by default, but I take it your file doesn't have the -T flag on the first line?

          Also - I take it you don't have "PerlSwitches -T" in your apache.conf file?

          I remember with Win32, running with tainted mode causes all sorts of problems with open3().

          However, the fact you got this working with CGI probably indicates this is not a real issue anyway.


    • Michael Dunn
      Michael Dunn

      If I run under <b>Windows 2000</b> with CGI-BIN and Apache 1.3, I get the following error:

      open3: IO::Pipe: Can't spawn-NOWAIT: No such file or directory at C:/codestriker-1.9.2-alpha-2/bin/../lib/Codestriker/Repository/ line 64

      My previous success w/ CGI-BIN and Apache 1.3 is under <b>Windows XP</b>.

      • David Sitsky
        David Sitsky

        Well that is damn weird.  My limited experience on the Win32+Perl has shown me that Perl 5.6.X is more stable than 5.8.X for this sort of stuff.

        I know its a major pain, but any chance if you could try this with Perl 5.6.X instead to see if it makes any difference?


    • Michael Dunn
      Michael Dunn

      I tried this with Perl 5.6.1 (w/CGI) instead and it doesn't make a difference.  I am assuming it's not worth trying with mod_perl?

      • David Sitsky
        David Sitsky

        I wouldn't bother.  I checked thr ActiveState website to see if there are any relevant bugs for this.  I could see the following:

        But its hard to say if they are taking them seriously.

        What might be interesting to try - can you setup a CVS repository and see if you can connect to that without problems?  We also use open3() for that module.

        • Guys, I'm going try it under win2003 and apache, how do you think which perl version should I use? Thanks a lot!

          • David Sitsky
            David Sitsky

            I would highly recommend you use Apache 1.X, and Perl 6.X, and just configure it for CGI use, not mod_perl.

            Let us know how you go.


            • I've already installed latest apache, I'll try it first, and if I'll have problems - 1.6.