Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reading more steps than available #613

Closed
pnorbert opened this issue May 10, 2018 · 2 comments
Closed

Reading more steps than available #613

pnorbert opened this issue May 10, 2018 · 2 comments
Assignees
Labels
bug status: fixed This issue been resolved

Comments

@pnorbert
Copy link
Contributor

BP file: it returns 0 in the arrays (or does nothing)
HDF5 file: it aborts
ADIOS 1.x gave an error describing what's wrong. With 11 steps in the heat transfer output, the adios 1.x bpls behaves like this when trying to read 2 steps from the last available step:

$ bpls -l heat.bp  -d -s "10,0,0" -c "2,10,6" --format "%5.2f" 
  double   T     11*{160, 150} = -6.22402 / 7.02874 / null  / null 
    slice (10:11, 0:9, 0:5)
ERROR: Variable T does not have timesteps 10 to 11 (last timestep is 10)
Error when scheduling variable T for reading. errno=-14 : Variable T does not have timesteps 10 to 11 (last timestep is 10)

utils/bpls in adios2 behaves like this for a BP file:

ADIOS2/build$ ./bin/bpls -l heat.bp  -d -s "10,0,0" -c "2,10,6" --format "%5.2f" 
  double   T     11*{160, 150}
    slice (10:11, 0:9, 0:5)
    (10,0,0)     2.95  2.90  2.85  2.80  2.77  2.73
    (10,1,0)     2.90  2.80  2.70  2.62  2.54  2.48
    (10,2,0)     2.85  2.70  2.56  2.44  2.32  2.23
    (10,3,0)     2.80  2.61  2.43  2.27  2.13  2.01
    (10,4,0)     2.76  2.54  2.32  2.13  1.95  1.81
    (10,5,0)     2.73  2.47  2.23  2.00  1.81  1.64
    (10,6,0)     2.70  2.42  2.15  1.90  1.69  1.50
    (10,7,0)     2.68  2.38  2.09  1.83  1.60  1.40
    (10,8,0)     2.67  2.35  2.05  1.78  1.54  1.33
    (10,9,0)     2.66  2.34  2.03  1.75  1.50  1.30
    (11,0,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,1,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,2,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,3,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,4,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,5,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,6,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,7,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,8,0)     0.00  0.00  0.00  0.00  0.00  0.00
    (11,9,0)     0.00  0.00  0.00  0.00  0.00  0.00

and on a HDF5 file, it aborts:

ADIOS2/build$ ./bin/bpls -l heat.h5  -d -s "10,0,0" -c "2,10,6" --format "%5.2f" 
  double   T     11*{160, 150}
    slice (10:11, 0:9, 0:5)
terminate called after throwing an instance of 'std::ios_base::failure[abi:cxx11]'
  what():  ERROR: given time step is more than actual known steps.: iostream error
[adiosVM:32695] *** Process received signal ***
[adiosVM:32695] Signal: Aborted (6)
[adiosVM:32695] Signal code:  (-6)
[adiosVM:32695] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f2d74db3390]
[adiosVM:32695] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f2d74a0d428]
[adiosVM:32695] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f2d74a0f02a]
[adiosVM:32695] [ 3] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x16d)[0x7f2d7526484d]
[adiosVM:32695] [ 4] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8d6b6)[0x7f2d752626b6]
[adiosVM:32695] [ 5] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8d701)[0x7f2d75262701]
[adiosVM:32695] [ 6] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8d919)[0x7f2d75262919]
[adiosVM:32695] [ 7] /home/adios/work/ADIOS2/build/lib/libadios2.so.2(_ZN6adios27interop10HDF5Common12SetAdiosStepEi+0x167)[0x7f2d761e0a9b]
[adiosVM:32695] [ 8] /home/adios/work/ADIOS2/build/lib/libadios2.so.2(_ZN6adios211HDF5ReaderP10UseHDFReadIdEEvRNS_8VariableIT_EEPS3_i+0x580)[0x7f2d761da92a]
[adiosVM:32695] [ 9] /home/adios/work/ADIOS2/build/lib/libadios2.so.2(_ZN6adios211HDF5ReaderP13GetSyncCommonIdEEvRNS_8VariableIT_EEPS3_+0x40)[0x7f2d761dde00]
[adiosVM:32695] [10] /home/adios/work/ADIOS2/build/lib/libadios2.so.2(_ZN6adios211HDF5ReaderP9DoGetSyncERNS_8VariableIdEEPd+0x2b)[0x7f2d761d1b4b]
[adiosVM:32695] [11] /home/adios/work/ADIOS2/build/lib/libadios2.so.2(_ZN6adios26Engine7GetSyncIdEEvRNS_8VariableIT_EEPS3_+0x3fc)[0x7f2d75fc149c]
[adiosVM:32695] [12] ./bin/bpls[0x4810c2]
[adiosVM:32695] [13] ./bin/bpls[0x471eb2]
[adiosVM:32695] [14] ./bin/bpls[0x4698ac]
[adiosVM:32695] [15] ./bin/bpls[0x46a39e]
[adiosVM:32695] [16] ./bin/bpls[0x468627]
[adiosVM:32695] [17] ./bin/bpls[0x46cbdc]
[adiosVM:32695] [18] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f2d749f8830]
[adiosVM:32695] [19] ./bin/bpls[0x467a09]
[adiosVM:32695] *** End of error message ***

For the latter one, the bug is probably in HDF5Common::SetAdiosStep(int step), the condition
if (step >= m_NumAdiosSteps)
passing for step one bigger than the last valid step index (NumAdiosSteps-1)

@guj
Copy link
Contributor

guj commented May 10, 2018 via email

williamfgc added a commit to williamfgc/ADIOS2 that referenced this issue Jun 25, 2018
@williamfgc
Copy link
Contributor

@pnorbert I added a commit, an exception will be thrown if a step selection goes beyond last step. There is a test https://github.com/ornladios/ADIOS2/blob/master/testing/adios2/engine/bp/TestBPWriteReadADIOS2.cpp for overflow. Thanks!

@chuckatkins chuckatkins added the status: fixed This issue been resolved label Sep 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug status: fixed This issue been resolved
Projects
None yet
Development

No branches or pull requests

4 participants