Ignore:
Timestamp:
2012-03-21T20:05:50+13:00 (12 years ago)
Author:
ak19
Message:

GS3 tomcat server crashes because java crashes owing to some error in the JNI code. The error may be related to pointers having been stored as int rather than long, an issue that's become noticeable on 64 bit linux machines. Changes have been made in the JNI code where these pointers that are transferred between Java and C++ code are stored (GetIntField and SetIntField to GetLongField and SetLongField, as well as declaration of data_ptr as jlong not jint). Committing code first without debug statements so the commits can easily be done separately.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/common-src/indexers/mg/jni/MGRetrieveWrapperImpl.c

    r25147 r25244  
    180180
    181181  /* Save the object on the Java side */
    182   (*j_env)->SetIntField(j_env, j_obj, FID_mg_data, (mg_s_long) data);
     182  (*j_env)->SetLongField(j_env, j_obj, FID_mg_data, (long) data);
    183183
    184184  /* Initialise MG environment variables */
     
    213213                      jstring j_index)
    214214{
    215   MGWrapperData* data = (MGWrapperData*) (*j_env)->GetIntField(j_env, j_obj, FID_mg_data);
     215  MGWrapperData* data = (MGWrapperData*) (*j_env)->GetLongField(j_env, j_obj, FID_mg_data);
    216216
    217217  /* Get the index name as a C string */
     
    243243                         jlong j_docnum)
    244244{
    245   MGWrapperData* data = (MGWrapperData*) (*j_env)->GetIntField(j_env, j_obj, FID_mg_data);
     245  MGWrapperData* data = (MGWrapperData*) (*j_env)->GetLongField(j_env, j_obj, FID_mg_data);
    246246
    247247  char* index_path;
Note: See TracChangeset for help on using the changeset viewer.