On 10-09-08 11:47 AM, Mathieu Desnoyers wrote:
* Alexandre Montplaisir ([email protected]) 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<[email protected]>
Date:   Fri Aug 20 12:02:42 2010 -0400

     ltt traceread: fix offsets calculation, should be per tracefile

     Signed-off-by: Mathieu Desnoyers<[email protected]>

: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
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev

_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev

Reply via email to