comparison agent/src/os/linux/ps_core.c @ 529:8db2b3e46c38

6786948: SA on core file fails on solaris-amd64 if vm started with -XX:+StartAttachListener Reviewed-by: jjh, dcubed
author swamyv
date Wed, 14 Jan 2009 19:45:01 -0800
parents d1605aabd0a1
children 0fbdb4381b99
comparison
equal deleted inserted replaced
524:c9004fe53695 529:8db2b3e46c38
236 } _space[NUM_SHARED_MAPS]; // was _space[CompactingPermGenGen::n_regions]; 236 } _space[NUM_SHARED_MAPS]; // was _space[CompactingPermGenGen::n_regions];
237 237
238 // Ignore the rest of the FileMapHeader. We don't need those fields here. 238 // Ignore the rest of the FileMapHeader. We don't need those fields here.
239 }; 239 };
240 240
241 static bool read_int(struct ps_prochandle* ph, uintptr_t addr, int* pvalue) { 241 static bool read_jboolean(struct ps_prochandle* ph, uintptr_t addr, jboolean* pvalue) {
242 int i; 242 jboolean i;
243 if (ps_pdread(ph, (psaddr_t) addr, &i, sizeof(i)) == PS_OK) { 243 if (ps_pdread(ph, (psaddr_t) addr, &i, sizeof(i)) == PS_OK) {
244 *pvalue = i; 244 *pvalue = i;
245 return true; 245 return true;
246 } else { 246 } else {
247 return false; 247 return false;
293 struct FileMapHeader header; 293 struct FileMapHeader header;
294 size_t n = 0; 294 size_t n = 0;
295 int fd = -1, m = 0; 295 int fd = -1, m = 0;
296 uintptr_t base = 0, useSharedSpacesAddr = 0; 296 uintptr_t base = 0, useSharedSpacesAddr = 0;
297 uintptr_t sharedArchivePathAddrAddr = 0, sharedArchivePathAddr = 0; 297 uintptr_t sharedArchivePathAddrAddr = 0, sharedArchivePathAddr = 0;
298 int useSharedSpaces = 0; 298 jboolean useSharedSpaces = 0;
299 map_info* mi = 0; 299 map_info* mi = 0;
300 300
301 memset(classes_jsa, 0, sizeof(classes_jsa)); 301 memset(classes_jsa, 0, sizeof(classes_jsa));
302 jvm_name = lib->name; 302 jvm_name = lib->name;
303 useSharedSpacesAddr = lookup_symbol(ph, jvm_name, USE_SHARED_SPACES_SYM); 303 useSharedSpacesAddr = lookup_symbol(ph, jvm_name, USE_SHARED_SPACES_SYM);
304 if (useSharedSpacesAddr == 0) { 304 if (useSharedSpacesAddr == 0) {
305 print_debug("can't lookup 'UseSharedSpaces' flag\n"); 305 print_debug("can't lookup 'UseSharedSpaces' flag\n");
306 return false; 306 return false;
307 } 307 }
308 308
309 if (read_int(ph, useSharedSpacesAddr, &useSharedSpaces) != true) { 309 // Hotspot vm types are not exported to build this library. So
310 // using equivalent type jboolean to read the value of
311 // UseSharedSpaces which is same as hotspot type "bool".
312 if (read_jboolean(ph, useSharedSpacesAddr, &useSharedSpaces) != true) {
310 print_debug("can't read the value of 'UseSharedSpaces' flag\n"); 313 print_debug("can't read the value of 'UseSharedSpaces' flag\n");
311 return false; 314 return false;
312 } 315 }
313 316
314 if (useSharedSpaces == 0) { 317 if ((int)useSharedSpaces == 0) {
315 print_debug("UseSharedSpaces is false, assuming -Xshare:off!\n"); 318 print_debug("UseSharedSpaces is false, assuming -Xshare:off!\n");
316 return true; 319 return true;
317 } 320 }
318 321
319 sharedArchivePathAddrAddr = lookup_symbol(ph, jvm_name, SHARED_ARCHIVE_PATH_SYM); 322 sharedArchivePathAddrAddr = lookup_symbol(ph, jvm_name, SHARED_ARCHIVE_PATH_SYM);