wiki:BugSquashingParty

Bug Squashing Party on Thursday, 2007/08/09

Hi everyone! We thought that it'd be a nice idea to clean up the COIN-OR code base, so we have decided to have a bug squashing party. It's going to take place this Thursday (Aug. 9, 2007) and maybe on Friday.

The Goal

The sky is the limit. Ideally we would want to

  • fix every bug in the bug tracking system both for trunk and stable (if a project uses that versioning convention)
  • get rid of all warnings for all compilers on all platforms.

Obviously it's not going to happen. Still, the more people join the party with more diverse computing equipment and compilers the more we can accomplish.

The Event

We start to work at 9:30am on Thursday. We will communicate via IRC (see instructions below). When someone joins the party and joins the IRC channel, the following happens:

  • She checks out the trunk of "everything". We had a hard time deciding what "everything" should be... and we have settled for the interconnected pieces, i.e., everything that depends on or is dependent on another COIN-OR project. (The reason is that standalone projects are a lot easier to handle. Still, if a project manager of a standalone project would like to join and have it tested that her code compiles and runs on different platforms she does not normally have access to, that would be fine.) To help checking out everything a dummy project will be created (see below) that people can check out. The reason for working with trunk is that trunk eventually will become the new stable, and it'd be a shame if we fix something in the current stable, forget to port the same change into trunk, and when trunk becomes stable then we have the old problem back. It's better if trunk is fixed. However, every effort will be made during the party to port the changes in trunk back to stable.
  • She decides to work on something. we'll maintain a wiki page of outstanding requests (like: please test this change on these platforms) to indicate what tasks should have priority.
  • When she fixes something then (depending on her confidence in the correctness of the fix) she either commits (if she has permission) or posts a patch to the outstanding requests page. In either case others get the change (by updating or by applying the patch) and test it. One way or another the fix eventually gets into the repository and voila, a problem is solved.
  • She goes on to another problem and repeats the process.

Communication via Phone

USA: 770-615-1254, Tie-Line 421-0038 or 1-877-421-0038
Austria: +43 179576264
Belgium: 0800-7-3026 or +32 22006114
Denmark: 80-888377 or +45 38323070
Finland: 0800-914-630 or +358 972519061
France: 0800-902366 or +33 157323040 or +33 157323041
Germany: 0800-181-6323 or +49 6951709081
Ireland: 1800-558728 or +353 16569209
Italy: 800-788634 or +39 0269430413
Netherlands: 0800-022-8558 or +31 202008077
Norway: 800-18373 or +47 24159528
Poland: +48 22 366 5400 or +48 22 609 5400
Spain: 900-95-1089 or +34 912754171
Sweden: 020-799414 or +46 850163259
Switzerland: 0800-564-331 or +41 446545620
United Kingdom: 0808-234-1969 or +44 2070260533
ITN: 2-421-0038

Passcode: 334265

Communication via IRC

We will set up an IRC server on irc.coin-or.org and you need an IRC client to connect to it. IRC allows anyone to join when they become available without the need to invite them like we'd need to do if we used Google's or Skype's chat feature.

The client we have tested with the server is ChatZilla. Others may (probably do) work just as well. ChatZilla is available as an add-on for Firefox. Install it from https://addons.mozilla.org/en-US/firefox/addon/16 or straight from the developers: http://chatzilla.hacksrus.com/xpi/chatzilla-0.9.78.1.xpi. Once you have installed ChatZilla just just follow this link irc://irc.coin-or.org or type it in firefox's address bar and you'll be connected: a ChatZilla window pops up. In the entry field on the bottom enter "/join bug" and you'll be on the "bug" channel with everyone else who has joined. When you want to leave just type "/leave".

In general, commands for the IRC server start with a "/". Few more important commands are:

  • /commands : lists all available commands
  • /help <command> : gives you help on a command.
  • /nick <new_nickname> : changes your nickname. Your default nickname is your login id. This command allows you to change it temporarily, and in the Preferences menu you can change it permanently.
  • /names : lists the nicknames of the people joined to the channel.

By default ChatZilla is in single-line entry mode, so whenever you hit enter, the line you just typed will be immediately sent to everyone on the channel. If you want to switch to multi-line mode (useful, e.e., entring code snippets) click on the small arrow right of the entry field. The direction of the arrow will change (clicking on that will switch back to single-line mode) and an "Enter" button is added there. Now you can just type away in the entry field and when you are ready for the others to see your work click on the "Enter" button.

Instructions for checking out what we work on

We prepared two "CoinAll" projects, one for all trunks and one for the latest stable branches. Those are:

  • https://projects.coin-or.org/svn/CoinAll/branches/all-trunk
  • https://projects.coin-or.org/svn/CoinAll/branches/all-stable

You can check them out the usual way.

Those also include some ThirdParty projects, and in order to configure things so that they work, you will need them. For convenience, there is a script get.AllThirdParty in the directory that you check out, you just need to run it.

If for some reason you have trouble configuring a particular project and want to do the configuration without, you can use the COIN_SKIP_PROJECTS variable for configure to tell it to skip projects.

On my (Andreas') Linux machine, I can configure and compile stable, but for trunk I need to set COIN_SKIP_PROJECTS="Blis OS".

Instructions for committing

Subversion doesn't have a formal mechanism for cross-indexing between commits and between it and Trac. So this has to be handled manually.

  • If you fix a bug from Trac, include the bug # in the SVN comment.
  • Close the bug in Trac with the rev number from SVN and whether it is in trunk or stable.
  • If you port a fix from trunk to stable or vice versa, include the rev of the original fix in the comment for the port.

Final Reports on builds and test on different platforms

  • AIX 5.3 with IBM compilers (default configuration)
    • Excluded from configuration:
      • SYMPHONY (xlC does treat .c files as C, but some files are C++)
      • OS (problem name conflicts in standard names in CppAD)
    • Unit tests: (problem below might be caused by usage of shared libraries?)
      • Successful: CoinUtils, Ipopt
      • Segmentation fault: Clp, Osi, Cgl, Cbc, Alps, Bcps, Blis
      • Illegal instruction: FlopCpp
  • Solaris 10 / Studio 11 (C++ 5.8 Patch 121017-04) debug and optimised builds.
    • Excluded from configuration:
      • Ipopt (multiple symbol definition issues; linking)
    • Unit tests:
      • Successful: Alps, Blis, Cgl (OsiClp, OsiDylp, OsiGlpk, but doesn't find OsiCpx for some reason), Clp, CoinUtils, DyLP, Osi (OsiClp, OsiDylp, OsiGlpk, OsiSym, OsiCpx, OsiCbc, OsiVol), OS, SYMPHONY
      • Test failure: Cbc (used to work but broken at the moment)
      • Build failures: Bcp (__vtbl undefined), Bcps (cannot resolve a templated function), FlopCpp (CC seems to want to use a private copy constructor)
      For the optimised build, Bcp works just fine, but OS takes a segfault just after printing `TESTING BASE 64 WITH A COIN SOLVER'.
  • SuSE 10 / GCC 4.0.2 debug and optimised builds.
    • Excluded from configuration:
      • Ipopt (Mumps fails to build, internal compiler error on optimised build)
    • Unit Tests:
      • Successful: Alps, Bcp, Bcps, Blis, Cgl (OsiClp, OsiDylp, OsiGlpk), Clp, CoinUtils, !DyLP, FlopCpp, OS, Osi (OsiClp, OsiDylp, OsiGlpk, OsiSym, OsiCbc, OsiVol), SYMPHONY
      • Test failure: Cbc (currently broken)
      For the optimised build, CoinUtils, DyLP, Osi, and SYMPHONY fail due to the --omit-frame-pointer / throw bug.
  • HP hppa2.0w-hp-hpux11.00 / aCC: HP ANSI C++ B3910B A.03.50
    • Excluded from configuration:
    • Unit Tests:
      • Successful: CoinUtils?, Clp, Alps, Blis, Bcps
      • Failed: Osi, Cgl (linking or runtime error with DyLP)
Last modified 12 years ago Last modified on Aug 15, 2007 11:52:34 AM