Name: Mark Wielaard
Member since: 2000-05-10 08:47:35
Last Login: 2010-01-22 15:12:51
Homepage: http://www.klomp.org/mark/
Notes: Since I know a little Java I try to contribute to some of the free Java related projects. I maintain the webpages and distribution files of GNUJSP. I contributed the java.util.jar package to Classpath (which is now merged into libgcj). I updated the javax.servlet package that Paul Siegman wrote to version 2.1 of the Servlet specification, which is now merged with the ClasspathX project. I am the current GNU Classpath maintainer.
Fosdem SystemTap Interview
Did an interview for FOSDEM about SystemTap. It discusses a wide range of topics. About when I got involved with Free Software, working for Red Hat, how FOSDEM helped the libre Java community, getting Fedora more observable by adding static markers into programs, the history of observation tools (tracers, profilers, debuggers) on GNU/Linux, comparisons to other tools like DTrace, GUI frontends, Eclipse integration, the future of SystemTap and of course why you should come to FOSDEM.
Fosdem talk – Full System Observability with SystemTap
Really looking forward to Fosdem next month. This year I will be giving a talk What is my system doing – Full System Observability with SystemTap during one of the main tracks. There will be some demos of the new systemtap java and python tracing support that I blogged about earlier.
Michael Meeks on Copyright Assignment
Michael Meeks published a though provoking essay called Some thoughts on Copyright Assignment. It is a must read when working with Free Software projects that request legal assignment of contributions to a corporation.
It contains sane recommendations both for individual contributors, project leaders and corporations seeking assignments.
Next step – SystemTap java hotspot jstack() support
Just checked in support for getting java backtraces from hotspot through systemtap. This is the next step in making not just the kernel and native programs observable, but also runtime based languages with SystemTap. And it is pretty powerful. It allows you to answer the question “How did I get here?” in combination with any of the SystemTap tapsets for VM level tracing, Java method entry/exit tracing, Native methods (JNI) tracing, or any other basic SystemTap function, statement or process probe that points into your java process. Just add one of the print_jstack() variants to your code (possibly including native frame and method signatures) and suddenly it is really easy to see what triggered a particular code path:
$ stap -e 'probe hotspot.jni.CallObjectMethod { log (probestr); print_jstack() }' -c 'java ModalTest'
CallObjectMethod(env=0x7f9d1000a1b8,obj=0x7f9d73efcaf8,methodid=0x7f9de4088b70)
sun/font/FontManager.getFont2D
sun/java2d/SunGraphics2D.checkFontInfo
sun/java2d/SunGraphics2D.getFontInfo
sun/java2d/pipe/GlyphListPipe.drawString
sun/java2d/SunGraphics2D.drawString
sun/swing/SwingUtilities2.drawString
sun/swing/SwingUtilities2.drawStringUnderlineCharAt
javax/swing/plaf/basic/BasicGraphicsUtils.drawStringUnderlineCharAt
sun/awt/X11/XButtonPeer.paintText
sun/awt/X11/XButtonPeer.paint
sun/awt/X11/XButtonPeer.paint
sun/awt/X11/XRepaintArea.paintComponent
sun/awt/RepaintArea.paint
sun/awt/X11/XComponentPeer.handleEvent
java/awt/Component.dispatchEventImpl
java/awt/Component.dispatchEvent
java/awt/EventQueue.dispatchEvent
java/awt/EventDispatchThread.pumpOneEventForFilters
java/awt/EventDispatchThread.pumpEventsForFilter
java/awt/EventDispatchThread.pumpEventsForFilter
java/awt/Dialog$1.run
java/awt/event/InvocationEvent.dispatch
java/awt/EventQueue.dispatchEvent
java/awt/EventDispatchThread.pumpOneEventForFilters
java/awt/EventDispatchThread.pumpEventsForFilter
java/awt/EventDispatchThread.pumpEventsForHierarchy
java/awt/EventDispatchThread.pumpEvents
java/awt/EventDispatchThread.pumpEvents
java/awt/EventDispatchThread.run
You currently need both IcedTea6 from mercurial and Systemtap from git to play with it. But both projects are planning new releases soon.
FudCon Success – Systemtap meets Python
At FudCon, David Malcolm, Jon VanAlten, Will Cohen and I sat down, had some fun and made tracing python methods through systemtap possible:
0 python(20122): => search_function in Lib/encodings/__init__.py:71
15 python(20122): => normalize_encoding in Lib/encodings/__init__.py:49
37 python(20122): <= normalize_encoding
170 python(20122): => <module> in Lib/encodings/utf_8.py:8
193 python(20122): => IncrementalEncoder in Lib/encodings/utf_8.py:18
206 python(20122): <= IncrementalEncoder
251 python(20122): => IncrementalDecoder in Lib/encodings/utf_8.py:22
264 python(20122): <= IncrementalDecoder
310 python(20122): => StreamWriter in Lib/encodings/utf_8.py:25
323 python(20122): <= StreamWriter
340 python(20122): => StreamReader in Lib/encodings/utf_8.py:28
353 python(20122): <= StreamReader
367 python(20122): <= <module>
391 python(20122): => getregentry in Lib/encodings/utf_8.py:33
410 python(20122): => __new__ in Lib/codecs.py:77
429 python(20122): <= __new__
440 python(20122): <= getregentry
462 python(20122): <= search_function
The coolest part is that it works through the existing patch to python for adding dtrace support. Some small tweaks to the autoconf detection was needed, but the rest was used as is.
If you want to learn how to add static user space probes to your program/package please see Will’s excellent guide. Adding User Space Probing to an Application: A simple example adding markers to a user-space application with SystemTap.
mjw certified others as follows:
Others have certified mjw as follows:
[ Certification disabled because you're not logged in. ]
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!