Marco Túlio Gontijo e Silva: Google Summer of Code weekly report #1
Some students of the Google Summer of Code are required to make a weekly report describing their activities. As far as I know, I m not, but I think it s a good idea in general, to comunicate to my mentor and other interested folks what I ve been doing. So I ll start to do them here.
My project is Implementing the Immix Garbage Collector Algorithm on GHC.
Last week I was most of the time involved in my school activities, so I didn t have much time to work on the project. I went to the bureaucratic services of my university to get a Proof of Enrollment in English, print/sign/scanned the Foreign Certification Form and sent them to Google on Friday afternoon. I asked them to confirm the receival, which they didn t. I m planning to ask again for a confirmal today in the afternoon, if I still get no reply.
I also tried to build the current version of GHC, from the darcs repository. I was getting an error with my old (and updated) repository, so I donwnloaded a new one and could build nicely. Then I noticed that with make distclean I could also build with my older one, so I just removed the new. I downloaded the nofib benchmark suite and made an initial benchmark.
While I was reading the documentation of the build process of GHC, I noticed a bug, and submitted a patch to the cvs-ghc mailing list. The patch was applied, with some changes.
This week I plan to focus more on the project, and spend the weekly 36 hours working on it. I m planning to start reading the Immix Technical Report to see if there s anything new there with regard to the article. After that I ll read the wiki documentation on the GHC current GC, together with the GHC source code. I ll also experiment with Criterion.
While I was writing this post I noticed that the GC benchmark in nofib is failing:
==nofib== fibheaps: time to run fibheaps follows... /usr/bin/time ../../runstdtest/runstdtest ./fibheaps -o1 fibheaps.stdout -o1 fibheaps.stdout -ghc-timing 300000; /usr/bin/time ../../runstdtest/runstdtest ./fibheaps -o1 fibheaps.stdout -o1 fibheaps.stdout -ghc-timing 300000; /usr/bin/time ../../runstdtest/runstdtest ./fibheaps -o1 fibheaps.stdout -o1 fibheaps.stdout -ghc-timing 300000; /usr/bin/time ../../runstdtest/runstdtest ./fibheaps -o1 fibheaps.stdout -o1 fibheaps.stdout -ghc-timing 300000; /usr/bin/time ../../runstdtest/runstdtest ./fibheaps -o1 fibheaps.stdout -o1 fibheaps.stdout -ghc-timing 300000; Command exited with non-zero status 2 0.72user 0.05system 0:00.77elapsed 99%CPU (0avgtext+0avgdata 277664maxresident)k 0inputs+32outputs (0major+17695minor)pagefaults 0swaps ././fibheaps 300000 < /dev/null **** expected exit status 0 not seen ; got 2 ././fibheaps 300000 < /dev/null expected stderr not matched by reality --- /tmp/no_stderr3559 2010-05-17 07:35:09.000000000 -0300 +++ /tmp/runtest3559.2 2010-05-17 07:35:10.000000000 -0300 @@ -0,0 +1,2 @@ +Stack space overflow: current size 8388608 bytes. +Use +RTS -Ksize -RTS' to increase it. Command exited with non-zero status 1 0.72user 0.06system 0:00.85elapsed 92%CPU (0avgtext+0avgdata 277664maxresident)k 368inputs+48outputs (1major+22085minor)pagefaults 0swaps Command exited with non-zero status 2 0.71user 0.04system 0:00.78elapsed 97%CPU (0avgtext+0avgdata 277664maxresident)k 0inputs+32outputs (0major+17694minor)pagefaults 0swaps ././fibheaps 300000 < /dev/null **** expected exit status 0 not seen ; got 2 ././fibheaps 300000 < /dev/null expected stderr not matched by reality --- /tmp/no_stderr3578 2010-05-17 07:35:10.000000000 -0300 +++ /tmp/runtest3578.2 2010-05-17 07:35:11.000000000 -0300 @@ -0,0 +1,2 @@ +Stack space overflow: current size 8388608 bytes. +Use +RTS -Ksize -RTS' to increase it. Command exited with non-zero status 1 0.72user 0.06system 0:00.80elapsed 98%CPU (0avgtext+0avgdata 277664maxresident)k 0inputs+48outputs (0major+22093minor)pagefaults 0swaps Command exited with non-zero status 2 0.72user 0.06system 0:00.80elapsed 98%CPU (0avgtext+0avgdata 277680maxresident)k 0inputs+32outputs (0major+17696minor)pagefaults 0swaps ././fibheaps 300000 < /dev/null **** expected exit status 0 not seen ; got 2 ././fibheaps 300000 < /dev/null expected stderr not matched by reality --- /tmp/no_stderr3597 2010-05-17 07:35:11.000000000 -0300 +++ /tmp/runtest3597.2 2010-05-17 07:35:12.000000000 -0300 @@ -0,0 +1,2 @@ +Stack space overflow: current size 8388608 bytes. +Use +RTS -Ksize -RTS' to increase it. Command exited with non-zero status 1 0.72user 0.07system 0:00.83elapsed 96%CPU (0avgtext+0avgdata 277680maxresident)k 0inputs+48outputs (0major+22095minor)pagefaults 0swaps Command exited with non-zero status 2 0.68user 0.08system 0:00.78elapsed 97%CPU (0avgtext+0avgdata 277680maxresident)k 0inputs+32outputs (0major+17695minor)pagefaults 0swaps ././fibheaps 300000 < /dev/null **** expected exit status 0 not seen ; got 2 ././fibheaps 300000 < /dev/null expected stderr not matched by reality --- /tmp/no_stderr3616 2010-05-17 07:35:12.000000000 -0300 +++ /tmp/runtest3616.2 2010-05-17 07:35:12.000000000 -0300 @@ -0,0 +1,2 @@ +Stack space overflow: current size 8388608 bytes. +Use +RTS -Ksize -RTS' to increase it. Command exited with non-zero status 1 0.70user 0.09system 0:00.80elapsed 98%CPU (0avgtext+0avgdata 277680maxresident)k 0inputs+48outputs (0major+22089minor)pagefaults 0swaps Command exited with non-zero status 2 0.71user 0.06system 0:00.93elapsed 82%CPU (0avgtext+0avgdata 277680maxresident)k 0inputs+32outputs (0major+17695minor)pagefaults 0swaps ././fibheaps 300000 < /dev/null **** expected exit status 0 not seen ; got 2 ././fibheaps 300000 < /dev/null expected stderr not matched by reality --- /tmp/no_stderr3635 2010-05-17 07:35:12.000000000 -0300 +++ /tmp/runtest3635.2 2010-05-17 07:35:13.000000000 -0300 @@ -0,0 +1,2 @@ +Stack space overflow: current size 8388608 bytes. +Use +RTS -Ksize -RTS' to increase it. Command exited with non-zero status 1 0.73user 0.06system 0:00.95elapsed 83%CPU (0avgtext+0avgdata 277680maxresident)k 0inputs+48outputs (0major+22089minor)pagefaults 0swaps make[1]: ** [runtests] Erro 1 Failed making all in fibheaps: 1 make: ** [all] Erro 1Erro is error in Portuguese. I ll investigate on that.



Today I strapped a kayack on a car (badly) and gingerly drove it out to the
country, stopping for Greek food enroute. Now at my
UPDATE: the bug is already fixed after a few hours, and only affected a
minority of users (of a now deprecated, experimental option in the 'unstable'
distribution, and only users that rebooted with the affected version).The sysvinit version that
I didn't write much about running stuff since
It is now possible to subscribe to Ubuntu bugmail for the packages you care about, without having to use Launchpad (and subscribe on a per-package basis there). This is implemented as a new opt-in
A scandal has been brewing in Latvia over the last half year and yesterday the activity spiked shocking the media and some IT people in the country. I ll go back and explain what happened first, what is happening now and why this could have a heavy impact on IT and journalists in Latvia.
At the end of last year, there were rumours that the IT system of Latvia s Internal Revenue System was hacked and millions of documents had been downloaded by multiple organizations. Shortly thereafter more details on the glaring security hole became public (after it was closed).
There is a full electronic interface to give all reports to the IRS electronically (at http://eds.vid.gov.lv) and as part of that system you could also view and export monthly report summaries about your organization into XML and PDF files. After the system checked that you are authorized to access the report, you were redirected to the URL to actually download the report by report ID (as a single param in a GET request). Unfortunately, report IDs were predicable and the script that gave the reports for download did not check if you were authorized to get that report. It did not even check if were logged into the system.
There were suspicions that the authorization was disabled on purpose to allow to leak data on purpose, but apparently it was an error of forgetting to disable debug code in production environment.
The error was discovered only because the firewall administrator noticed an unexplained stable increase of traffic, especially during night hours when typically the traffic fully stopped. Apparently a single hacker (who later identified himself as Neo to the press) discovered the flaw and wrote a script to just try all possible report ids and get as much data out as possible. This had been going on for months, before someone noticed.
After the flaw was discovered and a bit of time passed, Neo made his first move he published the list of top salaries in a governmental company, that clearly showed that the top leadership of this company failed to cut their salary by 40%, like everyone elses during harsh budget cuts of 2009. He stripped the names and ids of the specific employees, but named the company which made it pretty easy to figure out who was who.
The society was outraged that the top managers in a government owned company failed to comply with the strict pay cut that everyone else in government had to endure. But after a few weeks the outrage subsided and no action followed from the government or law enforcement.
Neo continued to release documents detailing salaries of top managers in different Latvian government companies. And each time after short outrage, nothing happened. Neo gave an interview where he said that he was disappointed in the passivity of the Latvian people in face of such blatant injustices.
After a few month Neo went silent, promising to return before parliamentary elections this fall.
However, this week a new development shocked everyone in the middle of the night two police SWAT teams went into action: one detained Ilm rs Poik ns, a researcher in artificial intelligence at the University of Latvia s Computer Science department and another raided the home of a Latvian TV journalist Ilze Nagle who interviewed Neo. Poik ns confessed of being Neo the next day and was released (with travel restrictions, pending trial) today.
Politicians reacted immediately opposition demanded the resignation of the Interior Minister over such blatant disregard of freedom of press and another politician (who is also a famous lawyer) Aleksejs Loskutovs volunteered to defend Neo pro-bono (on Twitter, no less). Almost all Latvian online media have the arrest of Neo and the raid on the home of a journalist as main stories of the day.
As a legal titbit, we also know that Neo is being charged with breaking statutes 145 and and 244p2 of the criminal law. Statute 145 is hard to find applicable in this situation as talks about actions done by people authorized (..) to access [private] information . Statute 244p2 will also be hard to pin down as it mentions influencing system resources of (an IT system) and if such action caused severe harm . It looks like the first part talks about at least a DoS attack (which did not happen in this case) and also there was no measurable harm from these leaks.
Also Neo was careful to strip all personally identifying information (such as names, social security numbers and addresses of the employees in question), so it will be hard to pin him on that. Also no actual breaking or other modification of an IT system occurred. And no specialized software was used beyond a trivial script such as :
Since October of 2002,
We appear to have a government again, which is always helpful. Let's see how they do. While all the deliberation was going on Dad and I had a ponder about exactly what your chances of voting for a winner were. The
I've been a little quieter than usual recently, having spent more time outdoors putting cute people in front of the camera. However that said I've still been doing some things. Most interestingly I've given away my first ever project.
The collection of small scripts known as xen-tools (which was initially a sleazy hack to go with a small