View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0006723VTK(No Category)public2008-04-07 06:412009-02-03 11:21
ReporterJulian Ibarz 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0006723: [Wrapping JAVA of VTK] Bug with methods containing character '_'
DescriptionThe JNI library replace all "_" substrings in function names by "_1" and the parser of VTK doesn't do this so this error occurs :

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: vtk.vtkSelection.PROCESS_ID_36()J
        at vtk.vtkSelection.PROCESS_ID_36(Native Method)
        at vtk.vtkSelection.PROCESS_ID(vtkSelection.java:471)
        at testvtk.CascadeActorManager.selectOnSurface(CascadeActorManager.java:142)
        at testvtk.TestRubberBand$RubberBandHelper.doSelectionVisible(TestRubberBand.java:71)
        at testvtk.TestRubberBand$RubberBandHelper.mouseReleased(TestRubberBand.java:64)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
        at java.awt.Component.processMouseEvent(Component.java:6038)
        at java.awt.Component.processEvent(Component.java:5803)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD STOPPED (total time: 12 seconds)

Because the real name expected by the JNI is vtk.vtkSelection.PROCESS_1ID_36 and not vtk.vtkSelection.PROCESS_ID_36. This is a program that can cause this :

import vtk.vtkSelection;

public class BugPROPID
{
      static
  {
    System.out.println(System.getProperty("java.library.path"));
    System.loadLibrary("vtkCommonJava");
    System.loadLibrary("vtkFilteringJava");
    System.loadLibrary("vtkIOJava");
    System.loadLibrary("vtkImagingJava");
    System.loadLibrary("vtkGraphicsJava");
    System.loadLibrary("vtkRenderingJava");
  }
  public static void main(String[] args)
  {
            vtkSelection selection = new vtkSelection();
            System.out.println("TEST : " + selection.PROP_ID());
  }
}

I have made a patch to fix it (it add '1' after all '_' in name methods and name classes).
TagsNo tags attached.
Project
Type
Attached Filespatch file icon underscore.patch [^] (256,585 bytes) 2008-04-07 06:41 [Show Content]
patch file icon bug.patch [^] (5,874 bytes) 2008-04-07 06:54 [Show Content]
patch file icon escapeMethodNameJava.patch [^] (2,575 bytes) 2008-07-03 04:35 [Show Content]
patch file icon escapeMethodNameJava-2.patch [^] (2,539 bytes) 2009-01-12 05:03 [Show Content]

 Relationships

  Notes
(0011076)
Julian Ibarz (reporter)
2008-04-07 06:55

I have made a light patch bug.patch.
(0011562)
Jerome Robert (reporter)
2008-04-28 03:43

The severity of this bug should be changed to "crash".
(0012603)
dbarbier (reporter)
2008-07-03 04:39

Hi there, explanations about JNI name mangling can be found at
  http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp133 [^]
So the fix is quite trivial, as reported by julianibarz, underscores
have to be replaced by "_1" in class and method names.
Since VTK class names contain no underscore, I propose a less
intrusive patch escapeMethodNameJava.patch to deal only with
method names, maybe you will like it more? This patch is very
safe, it is pretty obvious that nothing changes when method
name does not contain an underscore.

Below is the list of symbols which are currently not available
from Java:
   vtkAlgorithm::INPUT_ARRAYS_TO_PROCESS
   vtkAlgorithm::INPUT_CONNECTION
   vtkAlgorithm::INPUT_IS_OPTIONAL
   vtkAlgorithm::INPUT_IS_REPEATABLE
   vtkAlgorithm::INPUT_PORT
   vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE
   vtkAlgorithm::INPUT_REQUIRED_FIELDS
   vtkClipPlanesPainter::CLIPPING_PLANES
   vtkCoincidentTopologyResolutionPainter::POLYGON_OFFSET_FACES
   vtkCoincidentTopologyResolutionPainter::POLYGON_OFFSET_PARAMETERS
   vtkCoincidentTopologyResolutionPainter::RESOLVE_COINCIDENT_TOPOLOGY
   vtkCoincidentTopologyResolutionPainter::Z_SHIFT
   vtkCompositeDataPipeline::REQUIRES_TIME_DOWNSTREAM
   vtkCompositePainter::COLOR_LEAVES
   vtkDataArray::COMPONENT_RANGE
   vtkDataArray::L2_NORM_RANGE
   vtkDataArray::PER_COMPONENT
   vtkDataObject::CELL_DATA_VECTOR
   vtkDataObject::DATA_EXTENT
   vtkDataObject::DATA_EXTENT_TYPE
   vtkDataObject::DATA_GEOMETRY_UNMODIFIED
   vtkDataObject::DATA_NUMBER_OF_GHOST_LEVELS
   vtkDataObject::DATA_NUMBER_OF_PIECES
   vtkDataObject::DATA_OBJECT
   vtkDataObject::DATA_PIECE_NUMBER
   vtkDataObject::DATA_TIME_STEPS
   vtkDataObject::DATA_TYPE_NAME
   vtkDataObject::EDGE_DATA_VECTOR
   vtkDataObject::FIELD_ACTIVE_ATTRIBUTE
   vtkDataObject::FIELD_ARRAY_TYPE
   vtkDataObject::FIELD_ASSOCIATION
   vtkDataObject::FIELD_ATTRIBUTE_TYPE
   vtkDataObject::FIELD_NAME
   vtkDataObject::FIELD_NUMBER_OF_COMPONENTS
   vtkDataObject::FIELD_NUMBER_OF_TUPLES
   vtkDataObject::FIELD_OPERATION
   vtkDataObject::FIELD_RANGE
   vtkDataObject::POINT_DATA_VECTOR
   vtkDataObject::VERTEX_DATA_VECTOR
   vtkDemandDrivenPipeline::DATA_NOT_GENERATED
   vtkDemandDrivenPipeline::RELEASE_DATA
   vtkDemandDrivenPipeline::REQUEST_DATA
   vtkDemandDrivenPipeline::REQUEST_DATA_NOT_GENERATED
   vtkDemandDrivenPipeline::REQUEST_DATA_OBJECT
   vtkDemandDrivenPipeline::REQUEST_INFORMATION
   vtkDisplayListPainter::IMMEDIATE_MODE_RENDERING
   vtkExecutive::ALGORITHM_AFTER_FORWARD
   vtkExecutive::ALGORITHM_BEFORE_FORWARD
   vtkExecutive::ALGORITHM_DIRECTION
   vtkExecutive::FORWARD_DIRECTION
   vtkExecutive::FROM_OUTPUT_PORT
   vtkExecutive::KEYS_TO_COPY
   vtkHierarchicalBoxDataSet::NUMBER_OF_BLANKED_POINTS
   vtkHierarchicalBoxDataSet::REFINEMENT_RATIO
   vtkPainter::CONSERVE_MEMORY
   vtkPainter::HIGH_QUALITY
   vtkPainter::STATIC_DATA
   vtkPolyDataPainter::BUILD_NORMALS
   vtkPolyDataPainter::DATA_ARRAY_TO_VERTEX_ATTRIBUTE
   vtkPolyDataPainter::DISABLE_SCALAR_COLOR
   vtkScalarsToColorsPainter::ARRAY_ACCESS_MODE
   vtkScalarsToColorsPainter::ARRAY_COMPONENT
   vtkScalarsToColorsPainter::ARRAY_ID
   vtkScalarsToColorsPainter::ARRAY_NAME
   vtkScalarsToColorsPainter::COLOR_MODE
   vtkScalarsToColorsPainter::INTERPOLATE_SCALARS_BEFORE_MAPPING
   vtkScalarsToColorsPainter::LOOKUP_TABLE
   vtkScalarsToColorsPainter::SCALAR_MATERIAL_MODE
   vtkScalarsToColorsPainter::SCALAR_MODE
   vtkScalarsToColorsPainter::SCALAR_RANGE
   vtkScalarsToColorsPainter::SCALAR_VISIBILITY
   vtkScalarsToColorsPainter::USE_LOOKUP_TABLE_SCALAR_RANGE
   vtkSelection::COMPOSITE_INDEX
   vtkSelection::CONTAINING_CELLS
   vtkSelection::CONTENT_TYPE
   vtkSelection::FIELD_TYPE
   vtkSelection::HIERARCHICAL_INDEX
   vtkSelection::HIERARCHICAL_LEVEL
   vtkSelection::INDEXED_VERTICES
   vtkSelection::PIXEL_COUNT
   vtkSelection::PROCESS_ID
   vtkSelection::PROP_ID
   vtkSelection::SOURCE_ID
   vtkStreamingDemandDrivenPipeline::CONTINUE_EXECUTING
   vtkStreamingDemandDrivenPipeline::EXACT_EXTENT
   vtkStreamingDemandDrivenPipeline::EXTENT_TRANSLATOR
   vtkStreamingDemandDrivenPipeline::FAST_PATH_FOR_TEMPORAL_DATA
   vtkStreamingDemandDrivenPipeline::FAST_PATH_ID_TYPE
   vtkStreamingDemandDrivenPipeline::FAST_PATH_OBJECT_ID
   vtkStreamingDemandDrivenPipeline::FAST_PATH_OBJECT_TYPE
   vtkStreamingDemandDrivenPipeline::MAXIMUM_NUMBER_OF_PIECES
   vtkStreamingDemandDrivenPipeline::REQUEST_UPDATE_EXTENT
   vtkStreamingDemandDrivenPipeline::REQUEST_UPDATE_EXTENT_INFORMATION
   vtkStreamingDemandDrivenPipeline::TIME_RANGE
   vtkStreamingDemandDrivenPipeline::TIME_STEPS
   vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT
   vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT_INITIALIZED
   vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT_TRANSLATED
   vtkStreamingDemandDrivenPipeline::UPDATE_NUMBER_OF_GHOST_LEVELS
   vtkStreamingDemandDrivenPipeline::UPDATE_NUMBER_OF_PIECES
   vtkStreamingDemandDrivenPipeline::UPDATE_PIECE_NUMBER
   vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS
   vtkStreamingDemandDrivenPipeline::WHOLE_BOUNDING_BOX
   vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT
Thanks.
(0014527)
dbarbier (reporter)
2009-01-12 05:07

escapeMethodNameJava-2.patch has been uploaded to fix a build failure
with escapeMethodNameJava.patch with non-gcc compilers. Thanks to
Matthias Baitsch for reporting this issue.
(0014764)
Jeff Baumes (administrator)
2009-02-03 11:21

The following commit fixes the issue, using escapeMethodNameJava-2.patch. Thanks for reporting this and submitting a fix!

/cvsroot/VTK/VTK/Wrapping/vtkWrapJava.c,v <-- Wrapping/vtkWrapJava.c
new revision: 1.62; previous revision: 1.61

 Issue History
Date Modified Username Field Change
2008-04-07 06:41 Julian Ibarz New Issue
2008-04-07 06:41 Julian Ibarz File Added: underscore.patch
2008-04-07 06:54 Julian Ibarz File Added: bug.patch
2008-04-07 06:55 Julian Ibarz Note Added: 0011076
2008-04-28 03:43 Jerome Robert Note Added: 0011562
2008-07-03 04:35 dbarbier File Added: escapeMethodNameJava.patch
2008-07-03 04:39 dbarbier Note Added: 0012603
2009-01-12 05:03 dbarbier File Added: escapeMethodNameJava-2.patch
2009-01-12 05:07 dbarbier Note Added: 0014527
2009-02-03 11:21 Jeff Baumes Note Added: 0014764
2009-02-03 11:21 Jeff Baumes Status backlog => closed
2009-02-03 11:21 Jeff Baumes Resolution open => fixed
2011-06-16 13:11 Zack Galbreath Category => (No Category)


Copyright © 2000 - 2018 MantisBT Team