On 1 April 2016 at 10:45, Zack Weinberg wrote:
| Package: r-cran-hdf5
| Version: 1.6.10-3+b2
| Severity: normal
| 
| Attached to this bugreport are two HDF5 files named 'title.hdf' and
| 'no-title.hdf', and the Python script that generated them (using pytables).
| According to h5dump, the only difference between the two is
| 
| --- title.hdf
| +++ no-title.hdf
| ...
|        ATTRIBUTE "TITLE" {
|           DATATYPE  H5T_STRING {
|              STRSIZE 1;
|              STRPAD H5T_STR_NULLTERM;
|              CSET H5T_CSET_UTF8;
|              CTYPE H5T_C_S1;
|           }
| -         DATASPACE  SCALAR
| +         DATASPACE  NULL
|           DATA {
| -         (0): "M"
|           }
|        }
| 
| Calling hdf5load() on 'title.hdf' works fine, but calling it on
| 'no-title.hdf' crashes the R interpreter.

Sadly this package is not longer maintained upstream:

  https://cloud.r-project.org/web/packages/hdf5/index.html

Somehow R never had real good support for HDF5 files--maybe the newer h5
package could be an alternative?

  https://cloud.r-project.org/web/packages/h5/index.html

r-cran-hdf5 is only here because of some reverse dependency...

Dirk


| 
| (gdb) r
| Starting program: /usr/lib/R/bin/exec/R 
| [Thread debugging using libthread_db enabled]
| Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
| 
| R version 3.2.4 Revised (2016-03-16 r70336) -- "Very Secure Dishes"
| Copyright (C) 2016 The R Foundation for Statistical Computing
| Platform: x86_64-pc-linux-gnu (64-bit)
| 
| R is free software and comes with ABSOLUTELY NO WARRANTY.
| You are welcome to redistribute it under certain conditions.
| Type 'license()' or 'licence()' for distribution details.
| 
|   Natural language support but running in an English locale
| 
| R is a collaborative project with many contributors.
| Type 'contributors()' for more information and
| 'citation()' on how to cite R or R packages in publications.
| 
| Type 'demo()' for some demos, 'help()' for on-line help, or
| 'help.start()' for an HTML browser interface to help.
| Type 'q()' to quit R.
| 
| > library(hdf5)
| > hdf5load('no-title.hdf', verbosity=99)
| hdf5_global_verbosity=99 load=1
| Processing object: M ...... its a dataset...Dataset has ID83886080
| Dataset has tid 50331742
| Dataset has space id 67108866
| Dataset has rank 1
| Dataset has dims/maxdims: 1 / 1 
| Allocating vector with rank=1 dim=1
| calling vector_io. Hangs here with big datsets
| in vector_io: rank=1
| in vector_io:size 0 = 1 into n_elements......=1
|  Setting buffer size in plist
| About to read with bufsize = 8
|  Done read
| in vector_io: permuting
| in vector_io: tidying
| Phew. Done it. calling iinfo->add
| Rank > 1 or not VECSXP
| Calling  hdf5_load_attributes 
| Processing attribute 1 called CLASS
| attribute CLASS has rank 0 
| Rank 0 attribute treated as rank 1 size 1
| Attribute is a string
| in string_ref: count=1, size=5 srcbf=5
| leaving string_ref
| string length of new name =6
| Done processing attribute CLASS
| Processing attribute 2 called VERSION
| attribute VERSION has rank 0 
| Rank 0 attribute treated as rank 1 size 1
| Attribute is a string
| in string_ref: count=1, size=3 srcbf=3
| leaving string_ref
| string length of new name =8
| Done processing attribute VERSION
| Processing attribute 3 called TITLE
| attribute TITLE has rank 0 
| Rank 0 attribute treated as rank 1 size 1
| Attribute is a string
| 
| Program received signal SIGSEGV, Segmentation fault.
| 0x00007ffff70b606a in strlen () from /lib/x86_64-linux-gnu/libc.so.6
| (gdb) bt
| #0  0x00007ffff70b606a in strlen () from /lib/x86_64-linux-gnu/libc.so.6
| #1  0x00007ffff7915af9 in Rf_mkChar () from /usr/lib/R/lib/libR.so
| #2  0x00007ffff453148a in hdf5_process_attribute ()
|    from /usr/lib/R/site-library/hdf5/libs/hdf5.so
| #3  0x00007ffff3130c3b in H5A_attr_iterate_table ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #4  0x00007ffff32000bc in H5O_attr_iterate_real ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #5  0x00007ffff32007c7 in H5O_attr_iterate ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #6  0x00007ffff312e661 in H5Aiterate1 ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #7  0x00007ffff452e466 in ?? () from /usr/lib/R/site-library/hdf5/libs/hdf5.so
| #8  0x00007ffff452ff9b in ?? () from /usr/lib/R/site-library/hdf5/libs/hdf5.so
| #9  0x00007ffff31b07ed in ?? ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #10 0x00007ffff31b6449 in H5G__node_iterate ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #11 0x00007ffff3135763 in ?? ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #12 0x00007ffff3136c26 in H5B_iterate ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #13 0x00007ffff31bbc4f in H5G__stab_iterate ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #14 0x00007ffff31b8d90 in H5G__obj_iterate ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #15 0x00007ffff31b17e8 in H5G_iterate ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #16 0x00007ffff31ae4fa in H5Giterate ()
|    from /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10
| #17 0x00007ffff4531cdf in do_hdf5load ()
|    from /usr/lib/R/site-library/hdf5/libs/hdf5.so
| #18 0x00007ffff78f7331 in ?? () from /usr/lib/R/lib/libR.so
| #19 0x00007ffff792f7af in Rf_eval () from /usr/lib/R/lib/libR.so
| #20 0x00007ffff7931ca8 in ?? () from /usr/lib/R/lib/libR.so
| #21 0x00007ffff792f5a1 in Rf_eval () from /usr/lib/R/lib/libR.so
| #22 0x00007ffff7930c65 in Rf_applyClosure () from /usr/lib/R/lib/libR.so
| #23 0x00007ffff792f37d in Rf_eval () from /usr/lib/R/lib/libR.so
| #24 0x00007ffff7956bc2 in Rf_ReplIteration () from /usr/lib/R/lib/libR.so
| #25 0x00007ffff7956f41 in ?? () from /usr/lib/R/lib/libR.so
| #26 0x00007ffff7956ff4 in run_Rmainloop () from /usr/lib/R/lib/libR.so
| #27 0x00000000004007db in main ()
| (gdb) disas
| Dump of assembler code for function strlen:
|    0x00007ffff70b6040 <+0>:   pxor   %xmm8,%xmm8
|    0x00007ffff70b6045 <+5>:   pxor   %xmm9,%xmm9
|    0x00007ffff70b604a <+10>:  pxor   %xmm10,%xmm10
|    0x00007ffff70b604f <+15>:  pxor   %xmm11,%xmm11
|    0x00007ffff70b6054 <+20>:  mov    %rdi,%rax
|    0x00007ffff70b6057 <+23>:  mov    %rdi,%rcx
|    0x00007ffff70b605a <+26>:  and    $0xfff,%rcx
|    0x00007ffff70b6061 <+33>:  cmp    $0xfcf,%rcx
|    0x00007ffff70b6068 <+40>:  ja     0x7ffff70b60d0 <strlen+144>
| => 0x00007ffff70b606a <+42>:  movdqu (%rax),%xmm12
| [...etc...]
| (gdb) info registers
| rax            0x0    0
| rbx            0x0    0
| rcx            0x0    0
| rdx            0x1    1
| rsi            0x1    1
| rdi            0x0    0
| rbp            0x7fffffffbb00 0x7fffffffbb00
| rsp            0x7fffffffba48 0x7fffffffba48
| r8             0x0    0
| r9             0x20   32
| r10            0x7ffff7fd0780 140737353942912
| r11            0x0    0
| r12            0x1    1
| r13            0x11d8880      18712704
| r14            0xaa3488       11154568
| r15            0x4000003      67108867
| rip            0x7ffff70b606a 0x7ffff70b606a <strlen+42>
| eflags         0x10293        [ CF AF SF IF RF ]
| cs             0x33   51
| ss             0x2b   43
| ds             0x0    0
| es             0x0    0
| fs             0x0    0
| gs             0x0    0
| 
| Looks like Rf_mkChar() tried to call strlen() on a null pointer.
| 
| I believe that this is *not* a bug in pytables -- if I'm reading the HDF5
| spec correctly, DATASPACE NULL in this context is a valid way to spell
| the empty string -- but even if it is, under no circumstances should
| loading an HDF file, no matter how ill-formed, be able to crash the
| R interpreter.
| 
| zw
| 
| -- System Information:
| Debian Release: stretch/sid
|   APT prefers unstable
|   APT policy: (500, 'unstable'), (500, 'stable'), (1, 'experimental')
| Architecture: amd64 (x86_64)
| 
| Kernel: Linux 4.4.0-1-amd64 (SMP w/8 CPU cores)
| Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
| Shell: /bin/sh linked to /bin/dash
| Init: systemd (via /run/systemd/system)
| 
| Versions of packages r-cran-hdf5 depends on:
| ii  libc6                  2.22-5
| ii  libhdf5-10             1.8.16+docs-7
| ii  r-base-core [r-api-3]  3.2.4-revised-1
| ii  zlib1g                 1:1.2.8.dfsg-2+b1
| 
| r-cran-hdf5 recommends no packages.
| 
| r-cran-hdf5 suggests no packages.
| 
| -- no debconf information
| [DELETED ATTACHMENT create-hdfs.py, plain text]
| [DELETED ATTACHMENT title.hdf, application/x-hdf]
| [DELETED ATTACHMENT no-title.hdf, application/x-hdf]

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

Reply via email to