We just released a new stable version of Libevent
that fixes the following problems:
- If the kernel tells us that there are a negative number of bytes to read from a socket, do not believe it. Fixes bug 2841177; found by Alexander Pronchenkov.
- Do not allocate the maximum event queue and fd array for the epoll backend at startup. Instead, start out accepting 32 events at a time, and double the queue's size when it seems that the OS is generating events faster than we're requesting them. Saves up to 512K per epoll-based event_base. Resolves bug 2839240.
- Fix compilation on Android, which forgot to define fd_mask in its sys/select.h
- Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
- Rename our replacement compat/sys/_time.h header to avoid build a conflict on HPUX; reported by Kathryn Hogg.
- Build kqueue.c correctly on GNU/kFreeBSD platforms. Patch pulled upstream from Debian.
- Fix a problem with excessive memory allocation when using multiple event priorities.
- When running set[ug]id, don't check the environment. Based on a patch from OpenBSD.
A new alpha release of libevent 2.0 is on its way, too. Thanks to everyone who submitted patches and bug reports.
The source code is available at http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
. Don't forget to verify the signature
A while ago, I forged a San Mai billet
with the hope to turn it into a tanto. Unfortunately, the forge I was using had a very oxygen rich atmosphere and the welds did not take very well. Over the last couple of days, I spent some time grinding and heat treating the remaining steel into a knife for practice purposes. The cable structure of the knife came out very nicely with repeated applications of lemon juice and metal polish to remove the oxides left by the lemon juice etch.
I also figured out how to take decent pictures of the steel. The trick was to use direct light rather than diffused light that shines directly on the blade, and then have black surfaces inside the light box. The angle of the knife needs to be so that the black is reflected do the camera. Although, this is a failed knife due to all the welding flaws, it still was an interesting experiment.
I just finished taking the 5-day basic forging class
taught by Michael Bell at Dragonfly Forge
. The wakizashi in the picture is the result of it. The blade is about 18in long and was forged from forge-welded cable. The forge welding of the cable conducted by Michael and his son Gabriel took the better half of the first day. Afterward, the steel was forged into a sunobe which has the basic taper for the tang and point of the sword. We then forged in the ji and the shinogi ji. The remainder of the time was spent grinding in preparation for heat treatment. Before the clay was applied, we draw filed the blade so that all file marks were parallel with the edge rather than the perpendicular marks left by the belt grinder. Applying the clay was a three step process; a light coating of the whole blade, applying the ashi lines, and then coating everything that should remain soft. You can see the ashi and where the clay was applied on the middle picture. After heat treating, the blade took on a nice curve and it was back to the grinder. During the last day there was a little bit of time to polish on stones which showed hints of some very wild hamon as well as some mune yaki. The whole class was a great experience.
The call for papers for the 3rd USENIX Workshop on Large-Scale Exploits and Emergent Threats
(LEET '10) Botnets, Spyware, Worms, and More just went out. It will be held on April 27, 2010
in San Jose, CA.
will be co-located with the 7th USENIX Symposium on Networked Systems Design and Implementation (NSDI '10), which will take place April 28–30, 2010.
- Submissions due: Thursday, February 25, 2010, 11:59 p.m. PST
- Notification of acceptance: Wednesday, March 24, 2010
- Final papers due: Monday, April 5, 2010
- Michael Bailey, University of Michigan
- Dan Boneh, Stanford University
- Nick Feamster, Georgia Institute of Technology
- Jaeyeon Jung, Intel Labs, Seattle
- Christian Kreibich, International Computer Science Institute
- Patrick McDaniel, Pennsylvania State University
- Fabian Monrose, University of North Carolina, Chapel Hill
- Jose Nazario, Arbor Networks, Inc.
- Stefan Savage, University of California, San Diego
- Matt Williamson, AVG Technologies
- Yinglian Xie, Microsoft Research
- Vinod Yegneswaran, SRI International
Go submit your work!
Google's Anti-Malware team has prepared a moderator page where web masters and users can ask questions
and vote which questions they would like to see answered. The voting period ends on Friday, August 28th at which point the Anti-Malware team will prepare answers for some of the top-rated questions.
Nick just announced two new libevent releases. Here is his summary.
You can find the source in the usual place:
This is a bugfix-only release, and some of the bugs were kind of nasty. I'd recommend that you upgrade, especially if you are writing code that uses epoll or evdns.
Changes in 1.4.12-stable:
- Try to contain degree of failure when running on a win32 version so heavily firewalled that we can't fake a socketpair.
- Fix an obscure timing-dependent, allocator-dependent crash in the evdns code.
- Use _VA_ARGS_ syntax for varargs macros in event_rpcgen when compiler is not GCC.
- Activate fd events in a pseudorandom order with O(N) backends, so that we don't systematically favor low fds (select) or earlier-added fds (poll, win32).
- Fix another pair of fencepost bugs in epoll.c. [Patch from Adam Langley.]
- Do not break evdns connections to nameservers when our IP changes.
- Set truncated flag correctly in evdns server replies.
- Disable strict aliasing with GCC: our code is not compliant with it.
The first alpha release in the long-promised Libevent 2.0 series is finally out. You can download Libevent 2.0.2-alpha from:
This is an alpha release. Libevent 2.0 is not finished. There will be bugs, and we make no promises about the stability of any APIs introduced in the 2.0.x-alpha releases. When you find bugs, please let us know.
Libevent 2.0 is intended to be backward compatible with the Libevent 1.4 APIs[*]. Any program that worked with Libevent 1.4 should still work with Libevent 2.0, unless we screwed up. Please test your programs when you have a chance, so that if we did
screw up, we can notice soon.
[*] Unless you were messing around with the internals of internal structures.
This release adds many new features to the previous alpha release, and fixes many bugs. See the ChangeLog for full details. Highlights include:
- evdns is now threadsafe, with locking support
- There's an evconnlistener type that you can use to abstract cross-platform differences in accepting connections.
- The evbuffer interface (and therefore bufferevents) now supports zero-copy much better.
- About a zillion fixes for tricky bugs in the new Libevent 2.0.1-alpha code.
Special thanks to everybody who helped find bugs and improve the code, especially James Mansion, Zack Weinberg, and Joachim Bauch.