From mboxrd@z Thu Jan 1 00:00:00 1970 From: alexandre.montplaisir@polymtl.ca (Alexandre Montplaisir) Date: Wed, 08 Sep 2010 14:44:50 -0400 Subject: [ltt-dev] LTTV BUG: Recent upgrades broke the JNI interface In-Reply-To: <20100908154710.GA12501@Krystal> References: <4C87AC35.8000001@polymtl.ca> <20100908154710.GA12501@Krystal> Message-ID: <4C87D9A2.30204@polymtl.ca> On 10-09-08 11:47 AM, Mathieu Desnoyers wrote: > * Alexandre Montplaisir (alexandre.montplaisir at polymtl.ca) wrote: >> (It seems LTTV can't let go of me...) >> >> I was trying to reinstall TMF, which includes the compilation of LTTV >> with "./configure --with-jni-interface". However, make was now getting >> build errors: >> >> jni_interface.c: In function >> ?Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getOffset?: >> jni_interface.c:1005: error: ?struct marker_field? has no member named >> ?offset? >> jni_interface.c: In function >> ?Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getSize?: >> jni_interface.c:1012: error: ?struct marker_field? has no member named >> ?size? >> jni_interface.c: In function >> ?Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1printMarkerField?: >> jni_interface.c:1049: error: ?struct marker_field? has no member named >> ?offset? >> jni_interface.c:1050: error: ?struct marker_field? has no member named >> ?size? >> jni_interface.c: In function >> ?Java_org_eclipse_linuxtools_lttng_jni_JniParser_ltt_1getParsedData?: >> jni_interface.c:1134: error: ?struct marker_field? has no member named >> ?offset? >> >> >> >> Me and Michael were getting the same problem. Sun-java, openjdk gcj so >> were all giving the same errors. We ended up doing a git bisect, which >> gave the following commit as being responsible: >> >> 1184dc37d4cee465b9888fcec352c4ebe86d4246 is the first bad commit >> commit 1184dc37d4cee465b9888fcec352c4ebe86d4246 >> Author: Mathieu Desnoyers >> Date: Fri Aug 20 12:02:42 2010 -0400 >> >> ltt traceread: fix offsets calculation, should be per tracefile >> >> Signed-off-by: Mathieu Desnoyers >> >> :040000 040000 b655cf92cab4b1a11f4000e27663426da1e1d1dd >> 4e660bf0e8d8ad2ff0262e1c3223490d3f400178 M ltt >> >> >> I'll look into it this afternoon, but I suppose the changes in that >> commit were made for a reason, so I'm not too confident touching it. > Yeah, the library should be the only one knowing about the struct marker > offset/size fields, this is why I renamed them. The problem is that the > validity of this information is only while a given event is read. As > soon as the application reads events with same ID in other tracefiles > belonging to the same trace, it can overwrite the marker fields > offsets/sizes. This was causing a bug in LTTV. > > The application (lttv/tmf) should use the proper interface to access the > current event fields/offsets: ltt_event_field(). Hmm ok. After some digging in the JNI code (ouch), I found out the above 2 errors come from simple Get methods that aren't even used anywhere in TMF. However, another error comes up because the "->offset" field is also used elsewhere in their parser code. You don't want a patch that makes the JNI functions access "marker_field->_offset", do you? I can carry it out-of-tree to restore the previous functionality (and compilability (is that a word?)) for TMF, until they change their parser methods, since they'll probably get hit by the same bug as LTTV. Cheers, Alexandre > Thanks, > > Mathieu > >> Thanks, >> Alexandre >> >> >> ps. On a side note, it seems building liblttvtraceread with OpenJDK >> still works with TMF, so there might be hope for a liblttvtraceread-jni >> package after all... >> >> _______________________________________________ >> ltt-dev mailing list >> ltt-dev at lists.casi.polymtl.ca >> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev