[ltt-dev] LTTV BUG: Recent upgrades broke the JNI interface

Mathieu Desnoyers compudj at krystal.dyndns.org
Wed Sep 8 11:47:10 EDT 2010


* 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 <mathieu.desnoyers at polymtl.ca>
> Date:   Fri Aug 20 12:02:42 2010 -0400
>
>     ltt traceread: fix offsets calculation, should be per tracefile
>
>     Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
>
> :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().

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

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com




More information about the lttng-dev mailing list