Thread registration work-around?
by Anthony Green
FC5t1's Eclipse crashes on start-up on x86-64 systems...
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=174612
..due to this bug..
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13212
I don't believe this problem is unique to x86-64 - it's just highly
reproducible on that platform.
This is the same thing that was preventing RSSOwl from running on any
platform.
If we aren't prepared to import a new GC snapshot, or backport Hans'
fix, then I propose we modify java-gcj-compat's java.c wrapper to
LD_PRELOAD the following .so before every gij run. It makes sure that
any stray pthread_create() calls go through the GC's thread registration
process. Comments?
/* pthread_create registration wrapper for libgcj. Build it like
so...
gcc -shared -o pr13212.so pr13212.c -lgcj
*/
#define _GNU_SOURCE
#include <dlfcn.h>
#include <stdlib.h>
#include <pthread.h>
// A pointer to the real pthread_create_
static int (*pthread_create_) (pthread_t *__restrict __newthread,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg);
// The Boehm collector's pthread_create wrapper.
extern int GC_pthread_create (pthread_t *__restrict __newthread,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg);
// The start routine used by the Boehm collector. We'll use this to
// recognize pthread_create calls made by the collector's wrapper.
extern void *GC_start_routine (void *);
/* Force constr to execute prior to main(). */
static void constr (void) __attribute__ ((constructor));
static void
constr (void)
{
/* Get a pointer to the real pthread_create(). */
pthread_create_ = dlsym (RTLD_NEXT, "pthread_create");
if (pthread_create_ == NULL)
abort ();
}
/** Wrap the pthread_create function. */
int pthread_create (pthread_t *__restrict __newthread,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg)
{
// Call the real pthread_create() if we're called from boehm's wrapper,
// and call boehm's wrapper otherwise.
if (__start_routine == GC_start_routine)
return pthread_create_ (__newthread, __attr, __start_routine, __arg);
else
return GC_pthread_create (__newthread, __attr, __start_routine, __arg);
}
18 years, 3 months
Performance issues with gcc-4.1.0-0.10.i386
by Andrew Overholt
Hi,
I am seeing some performance issues with the latest gcc rawhide RPM set.
I tried a build of Eclipse with them and it took 650 minutes 42 seconds
where it used to take about 20 - 30 minutes (this is just for the
bytecode, BTW). I watched the log a bit as it built but nothing stood
out to me as taking more time than anything else.
My build did eventually finish, however, so I upgraded to those Eclipse
RPMs and tried to run Eclipse. Startup is very slow. I used OProfile
to grab some data and put it here:
http://overholt.ca/eclipsestartup-opreport.txt
Then I reset OProfile and grabbed some data while using Eclipse for a
few minutes. I have two small projects checked out and I cleaned them,
opened a file (which took a very long time), moved around a bit in the
file, closed it, and reopened it (which took much less time). Here is
the report from that session:
http://overholt.ca/eclipseusage-opreport.txt
The top of both reports is similar. Here's the top of the startup
report:
samples % app name symbol name
1814289 28.7922 libgcc_s-4.1.0-20051221.so.1 __deregister_frame_info_bases
1764105 27.9958 libgcc_s-4.1.0-20051221.so.1 add_fdes
1040376 16.5105 libgcc_s-4.1.0-20051221.so.1 size_of_encoded_value
693446 11.0048 libgcc_s-4.1.0-20051221.so.1 classify_object_over_fdes
539261 8.5579 libgcc_s-4.1.0-20051221.so.1 __ucmpdi2
I can get more information if you need.
Thanks,
Andrew
18 years, 3 months
GNU Classpath & friends meeting during Fosdem 2006
by Mark Wielaard
GNU Classpath & friends meeting during Fosdem 2006.
The various free software library, runtimes, compiler and tool
projects around GNU Classpath will meet in Brussel to discuss what has
happened in the last year in the Free Software community and what the
next year will bring us during Fosdem.
The 6th edition of FOSDEM (Free and Opensource Software Developers'
European Meeting) will take place on February 25+26 2006 in Brussels
(Belgium), at the Solbosch Campus of the ULB (Free University of
Brussels). FOSDEM is a free and non-commercial event for the community
and organized by the community. See http://www.fosdem.org/
The program will be as follows:
- Saturday from 13:00 to 17:30 - "End-User talks"
Presentations that show what cool stuff can be done with the Free
Stack right now.
- Putting the 'Free' into JFreeChart
Dave Gilbert, JFreeChart Project Leader
A review of the efforts to make JFreeChart work with GNU
Classpath-based runtimes, including a brief history, a demonstration
of the current state (using the java bindings for Cairo), and an
overview of the work that remains to be done.
- Using Eclipse for GNU Classpath development
Tom Tromey
Learn how to setup a fully working development environment based
on GNU Classpath in Eclipse that can be used to bootstrap the full
free toolchain (and can be used to run Eclipse itself) in just 10
minutes.
- Eclipse RCP and GCJ/GIJ
Wayne Beaton
Eclipse Rich Client Platform (RCP) is a runtime platform for
delivering your Java applications on multiple platforms. RCP is far
more than just a windowing toolkit; it is rich client "middleware"
that provides a comprehensive framework for building and deploying
applications that are modular, extensible, and updatable. The kinds
of applications you can build with Eclipse RCP are limited only by
your imagination. During this talk, we will discuss how the Eclipse
RCP can be used in conjunction with the Eclipse Eco-system and
GCJ/GIJ to build high quality applications.
If there is time at the end of the day we would like to do a
Show-And-Tell where people do quick Demos of applications running on a
completely free stack. Ideas and suggestions welcome.
- Sunday from 09:00 to 13:00 - "Developer talks"
Presentations of (core) libraries and runtimes that are in progress,
made a lot of progress in the last year and are in active development.
- Free Swing, past, present and future
Roman Kennke
An overview of that state of Free Swing one year ago, what has been
done in the meantime, what still must be done and which applications
work now.
- The Free CORBA comes
Dr Audrius Meskauskas
If the Free world does not want to step back in the battle, we need
a complete set of the Free tools for advanced communication over
the network. For our CORBA implementation we needed:
1. Free. No classes with restricted license.
2. Fully workable, interoperable and pass tests, recognized by
the CORBA user community as serious (we needed to find a well
known Free testing suite).
3. Properly commented, being ready for the long life in the Free
world.
4. No pressure to use the outdated approaches.
CORBA 3.0.3 and jdk 1.5.
To reach these goals, we have chosen for implementing a clean room
implementation, using the published standard specifications only.
During the recent year of the GNU Classpath development, this goal
is in large degree achieved. The important directions of future
development could be providing features that are outside the scope
of the both CORBA standard and Sun API, but included in the near all
proprietary implementations (SSH, HTTP and other bridges, get rid of
rmic code generator for RMI/IIOP, fault tolerant behavior, reduced
the footprint and others).
- The JamVM runtime
Robert Lougher
An overview of the JamVM virtual machine, with comparisons to other
GNU Classpath runtimes, and a section on the VM interface.
- Integrating Vmgen-based interpreters
Christian Thalinger
Vmgen is a tool for writing efficient interpreters. The Cacao
runtime recently added a Vmgen based interpreter in addition to
the JIT engine.
- Sunday from 14:00 to 17:30 - "The Future"
Interactive technical hacker discussions on how to integrate
the projects more and move forward in the next year.
- State of the world, beyond japi
Mark Wielaard, GNU Classpath Maintainer
After a short overview of the various free stacks, libraries,
compilers, tools and runtimes this session is mostly open discussion
about what work remains to be done and how to integrate the various
efforts better. Ideas for work items welcome.
We hope to see you in Brussels on February 25 and 26 2006, If you have
suggestions or ideas for the demos and discussion sessions please
contact us at fosdem(a)developer.classpath.org.
Arnaud, Dalibor, Mark, Michael and Tom
--
Escape the Java Trap with GNU Classpath!
http://www.gnu.org/philosophy/java-trap.html
Join the community at http://planet.classpath.org/
18 years, 3 months