[Mono-dev] mono-test-suite fails with pid/tid assert

Alexander Stohr Alexander.Stohr at gmx.de
Fri Aug 6 06:40:00 EDT 2010

i have just subscribed to that list in order to help advancing
in my mono based duties and for helping mono people in their targets.

my setup:
at present i am having an ARM Cortex-A8 (TI OMAP3) based portable system as my development target. most of the compilation is based on an x86 Linux host whilst having the option for using a wider bunch of development tools on the target. i am using the OpenEmbedded config flavour DISTRO="angstrom-2008.1" as my development base. some packages got specifically added or upgraded for good reasons to the most recent release ones (or what was latest at time of setup, <4 weeks), e.g. xli, busybox, cairo and gdiplus.

right now i am using the daily snapshot of mono dated 2010-08-02 in a custom bitbake setup (made this work on my own) for cross compilation using this set of switches:
EXTRA_OECONF_arm += " --disable-mcs-build --with-mcs-docs=no --with-sgen --enable-small-config --with-tls=pthread --with-sigaltstack=no CFLAGS=-DARM_FPU_NONE"

what would be the recommended best FPU settings for my case?
(there is not much of documentation on how to detect the FPU type on the target and what options are would match it)

problem (cont'ed):
when copying the very same mono tarball to the target and using its contents by a "./configure" and "make check" sequence i first had to remove all "/lib/*.la" files (found that hint somewhere on the web) and i had further to create a symlink using this "ln -s /usr/lib /usr/local/lib" to make this invocation basically run. (maybe i did a bit more trivia, cant remember...)

when doing the check now i am seeing this:

mono: pthread_getattr_np.c:74: pthread_getattr_np: Assertion `abs (thread->pid) == thread->tid' failed.

agreed that pid and tid should be the same in many cases e.g. for most of current Linux targets, but might not be true when its above the mono layer or when the hosting platform is different, e.g. Win32. (i might be wrong with that my understanding for the case, i have not digged into that that enough for now.) my best /guess/ so far was "man 3 pthread_getattr_np". hmm.

whats wrong here?
* can it be in my setup of mono? (i have not added any option to configure - if yes, what should i add and why?)
* is it in the test suite itself? (is the mono suite manipulating too much thread items it should never touch at all?)
* is it in the specific pairing of mono check with the rest of the operating system? (might there be something odd with the pthreads lib or similar? is mono not matching the pthreads setup? is the path leading to the desired mono check missing some important system aspect? normally i would expect a configured native build taking good care of the attributes of the embedding environment.)

in any case i would rather prefer a fix that by a change in the test suite or its configuration than altering the distributions cross build (even if there is no hard need for that, just a preference). at least for now hesitate a bit to permanently disable those pid/tid check in pthreads.

hoping for your valuable hints,

PS: here is a snippet from a "make -i check" with a bit more context
make test-local
make[8]: Entering directory `/mnt_data/mono-20100802/mcs/class/System'
MCS     [net_2_0] System.dll
mono: pthread_getattr_np.c:74: pthread_getattr_np: Assertion `abs (thread->pid) == thread->tid' failed.
make[8]: [../../class/lib/net_2_0/tmp/System.dll] Error 127 (ignored)
:  -R ../../class/lib/net_2_0/tmp/System.dll ./../../class/mono.snk
cp: can't stat './../../class/lib/net_2_0/tmp/System.dll': No such file or directory
make[8]: [../../class/lib/net_2_0/System.dll] Error 1 (ignored)
:  -v ../../class/lib/net_2_0/System.dll
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome

More information about the Mono-devel-list mailing list