79 success = true;
80 break;
81 case 0:
82 jio_snprintf(buffer, bufferSize, "Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again");
83 success = false;
84 break;
85 default:
86 jio_snprintf(buffer, bufferSize, "%s (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", core_path, (unsigned long)(rlim.rlim_cur >> 10));
87 success = true;
88 break;
89 }
90 }
91
92 VMError::record_coredump_status(buffer, success);
93 }
94
95 int os::get_native_stack(address* stack, int frames, int toSkip) {
96 int frame_idx = 0;
97 int num_of_frames; // number of frames captured
98 frame fr = os::current_frame();
99 while (fr.pc() && frame_idx < frames) {
100 if (toSkip > 0) {
101 toSkip --;
102 } else {
103 stack[frame_idx ++] = fr.pc();
104 }
105 if (fr.fp() == NULL || fr.cb() != NULL ||
106 fr.sender_pc() == NULL || os::is_first_C_frame(&fr)) break;
107
108 if (fr.sender_pc() && !os::is_first_C_frame(&fr)) {
109 fr = os::get_sender_for_C_frame(&fr);
110 } else {
111 break;
112 }
113 }
114 num_of_frames = frame_idx;
115 for (; frame_idx < frames; frame_idx ++) {
116 stack[frame_idx] = NULL;
117 }
118
|
79 success = true;
80 break;
81 case 0:
82 jio_snprintf(buffer, bufferSize, "Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again");
83 success = false;
84 break;
85 default:
86 jio_snprintf(buffer, bufferSize, "%s (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", core_path, (unsigned long)(rlim.rlim_cur >> 10));
87 success = true;
88 break;
89 }
90 }
91
92 VMError::record_coredump_status(buffer, success);
93 }
94
95 int os::get_native_stack(address* stack, int frames, int toSkip) {
96 int frame_idx = 0;
97 int num_of_frames; // number of frames captured
98 frame fr = os::current_frame();
99 // On ppc, current_frame returns the frame of get_native_stack(). This is the
100 // behaviour that is specified in os.hpp for this method. So adapt here.
101 // (Else we would also loose one frame in hs_err file.).
102 PPC_ONLY(toSkip++);
103 while (fr.pc() && frame_idx < frames) {
104 if (toSkip > 0) {
105 toSkip --;
106 } else {
107 stack[frame_idx ++] = fr.pc();
108 }
109 if (fr.fp() == NULL || fr.cb() != NULL ||
110 fr.sender_pc() == NULL || os::is_first_C_frame(&fr)) break;
111
112 if (fr.sender_pc() && !os::is_first_C_frame(&fr)) {
113 fr = os::get_sender_for_C_frame(&fr);
114 } else {
115 break;
116 }
117 }
118 num_of_frames = frame_idx;
119 for (; frame_idx < frames; frame_idx ++) {
120 stack[frame_idx] = NULL;
121 }
122
|