Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Tom Marchant
On Fri, 23 Jan 2015 09:01:52 -0800, Charles Mills wrote: FWIW, no, I never wrote the words register 13. I want a traceback. For all I care it could be based on R13 or breadcrumbs or footprints in the sand. Sorry, I thought I remembered R13 somewhere in this thread. Maybe it was someone else.

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Charles Mills
Great minds think alike. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Carl Kugler Sent: Friday, January 23, 2015 9:53 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: In C++ any way to get traceback info in a catch()? How

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Charles Mills
Right. And XPLINK implies PDSE. Nothing is simple. I think I only have one assembler routine that is used after initialization, so I could re-write that and live with a performance hit on all of the others. FWIW, no, I never wrote the words register 13. I want a traceback. For all I care it

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Carl Kugler
How about using set_new_handler() in your main() to register a new_handler() that does a ctrace() followed by a throw(std::bad_alloc)? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Charles Mills
Thanks. No question, that concerns me. I don't do any explicit new's in any of the processing I detail below. Does the C++ library do a new or malloc() under the covers? Who knows. Do I use stack? Of course. I suppose one advantage of throwing an exception would be that it would free up stack.

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Charles Mills
Works like a champ! That is exactly what David Crayford (thank you, David!) suggested off-line. I followed the spirit of this, but did things somewhat differently. In my new handler, I - Put out a diagnostic message - Call CEE3DMP - Call my existing clean-up-and-terminate routine. The dump is

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Carl Kugler
On Fri, 23 Jan 2015 10:50:50 -0800, Charles Mills charl...@mcn.org wrote: Works like a champ! That is exactly what David Crayford (thank you, David!) suggested off-line. I followed the spirit of this, but did things somewhat differently. In my new handler, I - Put out a diagnostic message -

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Carl Kugler
On Fri, 23 Jan 2015 11:26:06 -0800, Charles Mills charl...@mcn.org wrote: In my test it is one 6.3MB new that fails. So I presumably have lots of spare heap; just not 6.3MB. If the failure were due to a loop that did lots of tiny new's then that would not be the case. If the loop involved

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Bernd Oppolzer
Am 23.01.2015 um 02:53 schrieb Sam Siegel: On Jan 22, 2015 4:53 PM, Charles Mills charl...@mcn.org wrote: Ah, thanks. I keep forgetting that. Oddly named manual, IMHO. Anyway, I don't think I have a CIB. I think this condition is totally internal to C++ -- not an LE condition. Please take at

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Don Poitras
Now that I think about it though, we used to pay for ASKQ. I'm not sure if it's still called that. Check if you have that addon to IBMLINK. In article 20150123044405.9b45b2e...@panix3.panix.com you wrote: Sure, you can ask how. There's no guarantee you'll like the answer. :) In article

Re: In C++ any way to get traceback info in a catch()?

2015-01-23 Thread Tom Marchant
On Thu, 22 Jan 2015 20:11:12 -0800, Charles Mills wrote: Mmm. I'm going to make the 64-bit leap one of these days. I should set the option and compile everything and see what errors I get. That would be a first clue as to how big a leap. Be aware that C/C++ running AMODE 64 is XPLINK. Program

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Charles Mills
Bernd - Thanks much! Really. :-) Yes, I did not mention it, but when I catch conditions (in a generic sense of the word) in a signal handler then CEE3DMP shows the real error location. You can return from a signal handler so the stack is preserved. It appears the stack is unwound on a catch()

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Charles Mills
Don, thanks. To clarify, there is no ABEND type condition. The exception in questions is out of storage -- bad_alloc. Where is machine block documented or defined? cib_machine is a void*. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Sam Siegel
On Jan 22, 2015 4:53 PM, Charles Mills charl...@mcn.org wrote: Ah, thanks. I keep forgetting that. Oddly named manual, IMHO. Anyway, I don't think I have a CIB. I think this condition is totally internal to C++ -- not an LE condition. Please take at least a quick look at the le manuals. As

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Don Poitras
Charles, Same header. struct __mch. But you're right, if the LE ESTAE isn't invoked, none of this is going to get set. Open an ETR and ask IBM how to do what you want. __le_api.h In article 04ba01d0369a$cc5f3740$651da5c0$@mcn.org you wrote: Don, thanks. To clarify, there is no ABEND type

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Charles Mills
Can I ask IBM *how*? Don't I have to say catch() traceback is broken and let them argue with me? Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Don Poitras Sent: Thursday, January 22, 2015 7:30 PM To: IBM-MAIN@LISTSERV.UA.EDU

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Don Poitras
Charles, Sorry about that. Almost all the work I do in IBM C is in 64-bit. In article 04b301d03699$53ae6a60$fb0b3f20$@mcn.org you wrote: Grumble, grumble. __le_traceback() is AMODE 64 only. (Noticed that after spending about an hour trying to get the example to compile.) Charles

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Charles Mills
Mmm. I'm going to make the 64-bit leap one of these days. I should set the option and compile everything and see what errors I get. That would be a first clue as to how big a leap. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Don Poitras
Sure, you can ask how. There's no guarantee you'll like the answer. :) In article 050801d036c3$c42cd720$4c868560$@mcn.org you wrote: Can I ask IBM *how*? Don't I have to say catch() traceback is broken and let them argue with me? Charles -Original Message- From: IBM Mainframe

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Charles Mills
Grumble, grumble. __le_traceback() is AMODE 64 only. (Noticed that after spending about an hour trying to get the example to compile.) Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Don Poitras Sent: Thursday, January 22,

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Charles Mills
I am beginning to suspect I do not have a meaningful CIB. My CEE3DMP includes the (default) option CONDITION but there do not appear to be any CIBs in the dump. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Bernd Oppolzer

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Sam Siegel
On Jan 22, 2015 3:26 PM, Charles Mills charl...@mcn.org wrote: Don, thanks. To clarify, there is no ABEND type condition. The exception in questions is out of storage -- bad_alloc. Where is machine block documented or defined? cib_machine is a void*. Look in LE vendor interface manual for

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Charles Mills
Ah, thanks. I keep forgetting that. Oddly named manual, IMHO. Anyway, I don't think I have a CIB. I think this condition is totally internal to C++ -- not an LE condition. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Sam

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Shmuel Metz (Seymour J.)
In cafmxnwkytsctkf3gpxufyx6qtek9tnj7m1mnjos0ilv-k4o...@mail.gmail.com, on 01/22/2015 at 03:51 PM, Sam Siegel s...@pscsi.net said: Look in LE vendor interface manual for all of the LE control blocks. All? DCLCB? FCB? -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Don Poitras
The CIB is described in __le_api.h. There's a useful function for producing tracebacks, __le_traceback. The doc has sample code calling it in C. https://www-304.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/letraceback.htm?lang=en In article

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Sam Siegel
ceecib is documented in LE vendor interface manual On Thu, Jan 22, 2015 at 10:48 AM, Charles Mills charl...@mcn.org wrote: Bernd - Thanks much! Really. :-) Yes, I did not mention it, but when I catch conditions (in a generic sense of the word) in a signal handler then CEE3DMP shows the

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Charles Mills
Thanks! Do you have any idea whether __le_traceback will produce meaningful results in a situation in which CEE3DMP does not output a useful traceback? The C++ stack has apparently already been unwound when C++ enters a catch() block. The catch() block appears to have been called from the point at

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Bernd Oppolzer
Hello Charles, I hope that I am not directing you in the wrong direction ... that is: I hope that the CIB that you see contains the information that you need. What we did at the recent site that I worked: we had a LE exit that got control at all exceptions - no matter what kind - and did all

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Bernd Oppolzer
Am 22.01.2015 um 20:22 schrieb Charles Mills: Thanks! Do you have any idea whether __le_traceback will produce meaningful results in a situation in which CEE3DMP does not output a useful traceback? The C++ stack has apparently already been unwound when C++ enters a catch() block. The catch()

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Bernd Oppolzer
I just looked at the description of __le_traceback(). It looks as if it can be called with the DSA from the CIB; this way, it should give you all the information you need, IMO. In the calling example we have: tbck_parms.__tf_dsa_addr = 0; | this should be changed for our situation, I think.

Re: In C++ any way to get traceback info in a catch()?

2015-01-22 Thread Don Poitras
The C header has all that. cib_machine from the __cib structure is the pointer to the machine block. __mch has the psw, regs and bear at the time of abend. This all assumes you are running TRAP(ON). In article 54c1508e.3050...@t-online.de you wrote: Hello Charles, I hope that I am not