| Title: | C++ |
| Notice: | Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS) |
| Moderator: | DECCXX::AMARTIN |
| Created: | Fri Nov 06 1987 |
| Last Modified: | Thu Jun 05 1997 |
| Last Successful Update: | Fri Jun 06 1997 |
| Number of topics: | 3604 |
| Total number of notes: | 18242 |
| T.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 3205.1 | interesting one! | DECC::KIMMEL | Fri Aug 16 1996 10:57 | 8 | |
| 3205.2 | mode=ios::out, prot=filebuf::openprot | CADSYS::LANE | Fri Aug 16 1996 15:40 | 21 | |
| 3205.3 | anything changing the location of the file? | HNDYMN::MCCARTHY | A Quinn Martin Production | Mon Aug 19 1996 09:03 | 8 |
| 3205.4 | is it already opened by someone else? | HNDYMN::MCCARTHY | A Quinn Martin Production | Mon Aug 19 1996 09:17 | 7 |
| 3205.5 | file doesn't exist before open() call | CADSYS::LANE | Mon Aug 19 1996 10:49 | 29 | |
| 3205.6 | NQOS01::nqsrv427.nqo.dec.com::lusk | Three monkeys, ten minutes | Wed Sep 11 1996 11:52 | 2 | |
| 3205.7 | deja vu, all over again... | WRHS79::LANE | Thu Jan 16 1997 16:57 | 65 | |
| 3205.8 | TLE::D_SMITH | Duane Smith -- DEC C RTL | Thu Jan 16 1997 20:48 | 14 | |
| 3205.9 | WRHS79::LANE | Fri Jan 17 1997 11:09 | 35 | ||
| 3205.10 | start here.... | HNDYMN::MCCARTHY | A Quinn Martin Production | Fri Jan 17 1997 11:14 | 9 |
| 3205.11 | problem still exists in DECC$SHR T06.2-05 | WRHS79::LANE | Fri Jan 17 1997 13:12 | 8 | |
| 3205.12 | message to cerr never gets displayed... | DECC::J_WARD | Fri Jan 17 1997 14:13 | 19 | |
| 3205.13 | cerr | WRHS79::LANE | Fri Jan 17 1997 14:49 | 20 | |
| 3205.14 | Debugging this offline | TLE::D_SMITH | Duane Smith -- DEC C RTL | Fri Jan 17 1997 17:19 | 2 |
| 3205.15 | mea culpa | WRHS79::LANE | Fri Jan 24 1997 09:37 | 27 | |
Well, I had something like this in my program that got executed at some
point prior to calling ifstream::open():
buffer = new char [strlen(value)];
strcpy(buffer, value);
It just so happened in this particular case that the null byte ended up
clearing the "blockSize" field in the header of a memory block
maintained by LIB$VM_MALLOC().
When ifstream::open() got called, it in turn called the C RTL routine
open(). In open(), the RMS blocks get allocated and initialized before
SYS$OPEN() is called. calloc() (which calls LIB$VM_CALLOC()) is called
to allocate the RMS blocks. When the NAM block got allocated,
LIB$VM_MALLOC() returned the block with the incorrect zeroed block
size, then LIB$VM_CALLOC() didn't clear anything because the block size
was zero. So, the NAM block fields had junk in them and this is what
caused the RMS$_RLF error returned by SYS$OPEN().
As usual, just when I begin to suspect the problem is in someone else's
code, it winds up being my problem all along.
Thanks to Duane for the help in setting up so I could find the cause of
this bizarre problem.
Roy
| |||||