Discussion:
[Matplotlib-users] Runtime Error on Solaris - Error Closing Dupe File Handle
Bryan Williams
2015-05-21 20:08:10 UTC
Permalink
Good afternoon,



My name is Bryan Williams. I work for the Florida Forest Service in their
Forest Logistics and Support Bureau.



I’m working on a program that takes weather data and visualizes it using
matplotlib and Basemap. I’m currently having an issue with matplotlib 1.4.3
for Python 3.4.3 running under Solaris 5.10. I am getting a Runtime Error
whenever I try calling the read_png file from matplotlib._png. (I’m using
this to add a small .png file of the Forest Service’s sheld to the
picture). The error is the following:



Traceback (most recent call last):

File "drawmaps.py", line 845, in <module>

arr_lena = read_png(fn)

RuntimeError: Error closing dupe file handle



I don’t quite understand the error I’m getting, and as you can see, the
traceback gives very little information. I also tried Google for help, but
to no avail; entering the error message as is into Google doesn’t return
anything relating to the problem, and putting quotes around “Error closing
dupe file handle” yields about 10 results, with one of them being an
unanswered question from 2014 regarding the same issue.



As per your request on the website, here’s what I get from uname –a:



SunOS [server name withheld] 5.10 Generic_141444-09 sun4v sparc
SUNW,SPARC-Enterprise-T5220



I built Python 3.4.3 from source and installed matplotlib through pip, and
didn’t make any changes to the matplotlibrc file.



I was able to reproduce the problem again running these commands in the
Python interactive prompt, which emulates the snippet of script that causes
the error:



Python 3.4.3 (default, May 15 2015, 13:52:23)

[GCC 4.9.2] on sunos5

Type "help", "copyright", "credits" or "license" for more information.
from matplotlib._png import read_png
from matplotlib.cbook import get_sample_data
import os; path=os.getcwd()
fn = get_sample_data(path + '/resources/shield.png', asfileobj=False)
arr_lena = read_png(fn)
Traceback (most recent call last):

File "<stdin>", line 1, in <module>

RuntimeError: Error closing dupe file handle





If you’d like a copy of the problem script, please let me know. Any and all
help is greatly appreciated.



Thank you in advance!



-- BMW
Benjamin Root
2015-05-24 18:04:05 UTC
Permalink
Bryan,

First off, avoid importing things from modules that start with an
underscore. Because Python doesn't have semantics for public/private APIs
like C++ and Java does, the underscore is treated as an indicator to
developers that it is to be treated as private. The implication is that we
are free to change the API of "private" modules and functions between
releases, without warning or recourse, which would lead to breakage of your
scripts if you use them. So, use it at your peril.

I would recommend using plt.imread() instead, or use the Pillow package to
read your data as a numpy array that you can then plot.

Now, onto your issue. I suspect it might be related to changes we made in
1.4 to have a cross-platform file-handle. However, the solaris platform is
not regularly tested by anybody, so it is quite likely we broke something
there. Now, in the master branch on github, we completely rewrote nearly
all of the C++ code, so I while it may still be broken there, perhaps we
might get a more useful error message or something different entirely? Can
you try building from the master branch and letting us know?

Cheers!
Ben Root

P.S. - The script in question wasn't perhaps written originally by a former
Meteorologist colleague from the University of Oklahoma? ;-) If it was, he
was my officemate!


On Thu, May 21, 2015 at 4:08 PM, Bryan Williams <
Post by Bryan Williams
Good afternoon,
My name is Bryan Williams. I work for the Florida Forest Service in their
Forest Logistics and Support Bureau.
I’m working on a program that takes weather data and visualizes it using
matplotlib and Basemap. I’m currently having an issue with matplotlib 1.4.3
for Python 3.4.3 running under Solaris 5.10. I am getting a Runtime Error
whenever I try calling the read_png file from matplotlib._png. (I’m using
this to add a small .png file of the Forest Service’s sheld to the
File "drawmaps.py", line 845, in <module>
arr_lena = read_png(fn)
RuntimeError: Error closing dupe file handle
I don’t quite understand the error I’m getting, and as you can see, the
traceback gives very little information. I also tried Google for help, but
to no avail; entering the error message as is into Google doesn’t return
anything relating to the problem, and putting quotes around “Error closing
dupe file handle” yields about 10 results, with one of them being an
unanswered question from 2014 regarding the same issue.
SunOS [server name withheld] 5.10 Generic_141444-09 sun4v sparc
SUNW,SPARC-Enterprise-T5220
I built Python 3.4.3 from source and installed matplotlib through pip, and
didn’t make any changes to the matplotlibrc file.
I was able to reproduce the problem again running these commands in the
Python interactive prompt, which emulates the snippet of script that causes
Python 3.4.3 (default, May 15 2015, 13:52:23)
[GCC 4.9.2] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
from matplotlib._png import read_png
from matplotlib.cbook import get_sample_data
import os; path=os.getcwd()
fn = get_sample_data(path + '/resources/shield.png', asfileobj=False)
arr_lena = read_png(fn)
File "<stdin>", line 1, in <module>
RuntimeError: Error closing dupe file handle
If you’d like a copy of the problem script, please let me know. Any and
all help is greatly appreciated.
Thank you in advance!
-- BMW
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Thomas Caswell
2015-05-24 18:05:28 UTC
Permalink
Bryan,

If you subscribe to the list you will be able to post with out moderation.

Does this happen with any of the other sample data?

I don't think that `get_sample_data` is doing you any good here as you are
passing it an absolute path (from `os.getcwd()`) which is passed into
`os.path.join` which when it encounters and absolute path discards
everything to the left so that line is just returning back your input.

Does it work to open any other png or does _only_ this png have issues?

You are reaching into the nominally private parts of the mpl api here, I
would suggest using `mpl.image.imread` instead.

It might be worth using something like PIL/pillow, imread (
https://pypi.python.org/pypi/imread), imageio (https://imageio.github.io/)
or scikit-image for alternate implementations of png readers.

None of the core developers have access to a Solaris machine so it is very
difficult for us to provide much better help on this.

Tom
Post by Bryan Williams
Good afternoon,
My name is Bryan Williams. I work for the Florida Forest Service in their
Forest Logistics and Support Bureau.
I’m working on a program that takes weather data and visualizes it using
matplotlib and Basemap. I’m currently having an issue with matplotlib 1.4.3
for Python 3.4.3 running under Solaris 5.10. I am getting a Runtime Error
whenever I try calling the read_png file from matplotlib._png. (I’m using
this to add a small .png file of the Forest Service’s sheld to the
File "drawmaps.py", line 845, in <module>
arr_lena = read_png(fn)
RuntimeError: Error closing dupe file handle
I don’t quite understand the error I’m getting, and as you can see, the
traceback gives very little information. I also tried Google for help, but
to no avail; entering the error message as is into Google doesn’t return
anything relating to the problem, and putting quotes around “Error closing
dupe file handle” yields about 10 results, with one of them being an
unanswered question from 2014 regarding the same issue.
SunOS [server name withheld] 5.10 Generic_141444-09 sun4v sparc
SUNW,SPARC-Enterprise-T5220
I built Python 3.4.3 from source and installed matplotlib through pip, and
didn’t make any changes to the matplotlibrc file.
I was able to reproduce the problem again running these commands in the
Python interactive prompt, which emulates the snippet of script that causes
Python 3.4.3 (default, May 15 2015, 13:52:23)
[GCC 4.9.2] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
from matplotlib._png import read_png
from matplotlib.cbook import get_sample_data
import os; path=os.getcwd()
fn = get_sample_data(path + '/resources/shield.png', asfileobj=False)
arr_lena = read_png(fn)
File "<stdin>", line 1, in <module>
RuntimeError: Error closing dupe file handle
If you’d like a copy of the problem script, please let me know. Any and
all help is greatly appreciated.
Thank you in advance!
-- BMW
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Bryan Williams
2015-05-28 13:13:31 UTC
Permalink
Thanks to the both of you.

First off, apologies for getting back to you several days late. I was out
of town for the holiday weekend, and I didn't get a chance to work on this
for the last two days as I had other business to tend to on Tuesday, and
was out of the office all day Wednesday.

I tried to install from the master build on Github, and it seemed to run
fine, until I ended up with this error (and verbose details, text wall
incoming):

============================================================================
Edit setup.cfg to change the build options

BUILDING MATPLOTLIB
matplotlib: yes [1.5.dev1]
python: yes [3.4.3 (default, May 15 2015, 13:52:23) [GCC
4.9.2]]
platform: yes [sunos5]

REQUIRED DEPENDENCIES AND EXTENSIONS
numpy: yes [version 1.9.2]
six: yes [using six version 1.9.0]
dateutil: yes [using dateutil version 2.4.2]
pytz: yes [using pytz version 2015.4]
tornado: yes [tornado was not found. It is required for the
WebAgg backend. pip/easy_install may attempt to
install it after matplotlib.]
pyparsing: yes [using pyparsing version 2.0.3]
libagg: yes [pkg-config information for 'libagg' could not
be found. Using local copy.]
freetype: yes [version 2.4.8]
png: yes [version 1.2.35]
qhull: yes [pkg-config information for 'qhull' could not be
found. Using local copy.]

OPTIONAL SUBPACKAGES
sample_data: yes [installing]
toolkits: yes [installing]
tests: yes [using nose version 1.3.6 / using unittest.mock]
toolkits_tests: yes [using nose version 1.3.6 / using unittest.mock]

OPTIONAL BACKEND EXTENSIONS
macosx: no [Mac OS-X only]
qt5agg: no [PyQt5 not found]
qt4agg: no [PySide not found; PyQt4 not found]
gtk3agg: no [Requires pygobject to be installed.]
gtk3cairo: no [Requires cairocffi or pycairo to be installed.]
gtkagg: no [Requires pygtk]
tkagg: yes [installing, version not identified]
wxagg: no [requires wxPython]
gtk: no [Requires pygtk]
agg: yes [installing]
cairo: no [cairocffi or pycairo not found]
windowing: no [Microsoft Windows only]

OPTIONAL LATEX DEPENDENCIES
dvipng: no
ghostscript: no
latex: no
pdftops: no

running build
running build_py
copying lib/matplotlib/mpl-data/matplotlibrc ->
build/lib.solaris-2.10-sun4v.32bit-3.4/matplotlib/mpl-data
running build_ext
building 'matplotlib.ft2font' extension
gcc -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -fPIC
-DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API
-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
-I/usr/local/lib/python3.4/site-packages/numpy/core/include
-I/usr/local/include -I/usr/local/include/freetype2 -I/usr/local/include
-I. -I/usr/local/include/python3.4m -c src/ft2font.cpp -o
build/temp.solaris-2.10-sun4v.32bit-3.4/src/ft2font.o
In file included from /usr/local/include/python3.4m/Python.h:8:0,
from src/mplutils.h:21,
from src/ft2font.cpp:8:
/usr/local/include/python3.4m/pyconfig.h:1387:0: warning:
"_FILE_OFFSET_BITS" redefined
#define _FILE_OFFSET_BITS 64
^
In file included from
/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/include-fixed/wchar.h:20:0,
from /opt/csw/include/c++/4.9.2/cwchar:44,
from /opt/csw/include/c++/4.9.2/bits/postypes.h:40,
from /opt/csw/include/c++/4.9.2/bits/char_traits.h:40,
from /opt/csw/include/c++/4.9.2/string:40,
from src/ft2font.cpp:5:
/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/include-fixed/sys/feature_tests.h:196:0:
note: this is the location of the previous definition
#define _FILE_OFFSET_BITS 32
^
gcc -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -fPIC
-DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API
-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
-I/usr/local/lib/python3.4/site-packages/numpy/core/include
-I/usr/local/include -I/usr/local/include/freetype2 -I/usr/local/include
-I. -I/usr/local/include/python3.4m -c src/ft2font_wrapper.cpp -o
build/temp.solaris-2.10-sun4v.32bit-3.4/src/ft2font_wrapper.o
In file included from /usr/local/include/python3.4m/Python.h:8:0,
from src/mplutils.h:21,
from src/ft2font_wrapper.cpp:1:
/usr/local/include/python3.4m/pyconfig.h:1387:0: warning:
"_FILE_OFFSET_BITS" redefined
#define _FILE_OFFSET_BITS 64
^
In file included from /usr/include/sys/int_types.h:34:0,
from /usr/include/sys/stdint.h:17,
from /usr/include/stdint.h:17,
from
/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/include/stdint.h:9,
from src/mplutils.h:11,
from src/ft2font_wrapper.cpp:1:
/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/include-fixed/sys/feature_tests.h:196:0:
note: this is the location of the previous definition
#define _FILE_OFFSET_BITS 32
^
In file included from /usr/local/include/python3.4m/Python.h:36:0,
from src/mplutils.h:21,
from src/ft2font_wrapper.cpp:1:
/usr/include/unistd.h:496:75: error: conflicting declaration of C function
'void swab(const void*, void*, ssize_t)'
extern void swab(const void *_RESTRICT_KYWD, void *_RESTRICT_KYWD,
ssize_t);
^
In file included from /usr/local/include/python3.4m/Python.h:34:0,
from src/mplutils.h:21,
from src/ft2font_wrapper.cpp:1:
/usr/include/stdlib.h:144:13: note: previous declaration 'void swab(const
char*, char*, ssize_t)'
extern void swab(const char *, char *, ssize_t);
^
error: command 'gcc' failed with exit status 1


I have gcc on the box. I also installed the C compiler for Solaris (cc),
but I couldn't seem to find an option to switch it so that it uses cc
rather than gcc.

Thanks again for all you do, and thanks for the help.

-- BMW
Post by Benjamin Root
Bryan,
If you subscribe to the list you will be able to post with out moderation.
Does this happen with any of the other sample data?
I don't think that `get_sample_data` is doing you any good here as you are
passing it an absolute path (from `os.getcwd()`) which is passed into
`os.path.join` which when it encounters and absolute path discards
everything to the left so that line is just returning back your input.
Does it work to open any other png or does _only_ this png have issues?
You are reaching into the nominally private parts of the mpl api here, I
would suggest using `mpl.image.imread` instead.
It might be worth using something like PIL/pillow, imread (
https://pypi.python.org/pypi/imread), imageio (https://imageio.github.io/)
or scikit-image for alternate implementations of png readers.
None of the core developers have access to a Solaris machine so it is very
difficult for us to provide much better help on this.
Tom
On Sun, May 24, 2015 at 1:38 PM Bryan Williams <
Post by Bryan Williams
Good afternoon,
My name is Bryan Williams. I work for the Florida Forest Service in their
Forest Logistics and Support Bureau.
I’m working on a program that takes weather data and visualizes it using
matplotlib and Basemap. I’m currently having an issue with matplotlib 1.4.3
for Python 3.4.3 running under Solaris 5.10. I am getting a Runtime Error
whenever I try calling the read_png file from matplotlib._png. (I’m using
this to add a small .png file of the Forest Service’s sheld to the
File "drawmaps.py", line 845, in <module>
arr_lena = read_png(fn)
RuntimeError: Error closing dupe file handle
I don’t quite understand the error I’m getting, and as you can see, the
traceback gives very little information. I also tried Google for help, but
to no avail; entering the error message as is into Google doesn’t return
anything relating to the problem, and putting quotes around “Error closing
dupe file handle” yields about 10 results, with one of them being an
unanswered question from 2014 regarding the same issue.
SunOS [server name withheld] 5.10 Generic_141444-09 sun4v sparc
SUNW,SPARC-Enterprise-T5220
I built Python 3.4.3 from source and installed matplotlib through pip,
and didn’t make any changes to the matplotlibrc file.
I was able to reproduce the problem again running these commands in the
Python interactive prompt, which emulates the snippet of script that causes
Python 3.4.3 (default, May 15 2015, 13:52:23)
[GCC 4.9.2] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
from matplotlib._png import read_png
from matplotlib.cbook import get_sample_data
import os; path=os.getcwd()
fn = get_sample_data(path + '/resources/shield.png', asfileobj=False)
arr_lena = read_png(fn)
File "<stdin>", line 1, in <module>
RuntimeError: Error closing dupe file handle
If you’d like a copy of the problem script, please let me know. Any and
all help is greatly appreciated.
Thank you in advance!
-- BMW
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Thomas Caswell
2015-05-28 13:54:57 UTC
Permalink
I think there is on open bug about compilation failures on Solaris which we
never sorted out due to not having access to a test machine.
Post by Bryan Williams
Thanks to the both of you.
First off, apologies for getting back to you several days late. I was out
of town for the holiday weekend, and I didn't get a chance to work on this
for the last two days as I had other business to tend to on Tuesday, and
was out of the office all day Wednesday.
I tried to install from the master build on Github, and it seemed to run
fine, until I ended up with this error (and verbose details, text wall
============================================================================
Edit setup.cfg to change the build options
BUILDING MATPLOTLIB
matplotlib: yes [1.5.dev1]
python: yes [3.4.3 (default, May 15 2015, 13:52:23) [GCC
4.9.2]]
platform: yes [sunos5]
REQUIRED DEPENDENCIES AND EXTENSIONS
numpy: yes [version 1.9.2]
six: yes [using six version 1.9.0]
dateutil: yes [using dateutil version 2.4.2]
pytz: yes [using pytz version 2015.4]
tornado: yes [tornado was not found. It is required for the
WebAgg backend. pip/easy_install may attempt to
install it after matplotlib.]
pyparsing: yes [using pyparsing version 2.0.3]
libagg: yes [pkg-config information for 'libagg' could not
be found. Using local copy.]
freetype: yes [version 2.4.8]
png: yes [version 1.2.35]
qhull: yes [pkg-config information for 'qhull' could not be
found. Using local copy.]
OPTIONAL SUBPACKAGES
sample_data: yes [installing]
toolkits: yes [installing]
tests: yes [using nose version 1.3.6 / using
unittest.mock]
toolkits_tests: yes [using nose version 1.3.6 / using
unittest.mock]
OPTIONAL BACKEND EXTENSIONS
macosx: no [Mac OS-X only]
qt5agg: no [PyQt5 not found]
qt4agg: no [PySide not found; PyQt4 not found]
gtk3agg: no [Requires pygobject to be installed.]
gtk3cairo: no [Requires cairocffi or pycairo to be installed.]
gtkagg: no [Requires pygtk]
tkagg: yes [installing, version not identified]
wxagg: no [requires wxPython]
gtk: no [Requires pygtk]
agg: yes [installing]
cairo: no [cairocffi or pycairo not found]
windowing: no [Microsoft Windows only]
OPTIONAL LATEX DEPENDENCIES
dvipng: no
ghostscript: no
latex: no
pdftops: no
running build
running build_py
copying lib/matplotlib/mpl-data/matplotlibrc ->
build/lib.solaris-2.10-sun4v.32bit-3.4/matplotlib/mpl-data
running build_ext
building 'matplotlib.ft2font' extension
gcc -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -fPIC
-DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API
-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
-I/usr/local/lib/python3.4/site-packages/numpy/core/include
-I/usr/local/include -I/usr/local/include/freetype2 -I/usr/local/include
-I. -I/usr/local/include/python3.4m -c src/ft2font.cpp -o
build/temp.solaris-2.10-sun4v.32bit-3.4/src/ft2font.o
In file included from /usr/local/include/python3.4m/Python.h:8:0,
from src/mplutils.h:21,
"_FILE_OFFSET_BITS" redefined
#define _FILE_OFFSET_BITS 64
^
In file included from
/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/include-fixed/wchar.h:20:0,
from /opt/csw/include/c++/4.9.2/cwchar:44,
from /opt/csw/include/c++/4.9.2/bits/postypes.h:40,
from /opt/csw/include/c++/4.9.2/bits/char_traits.h:40,
from /opt/csw/include/c++/4.9.2/string:40,
note: this is the location of the previous definition
#define _FILE_OFFSET_BITS 32
^
gcc -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -fPIC
-DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API
-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
-I/usr/local/lib/python3.4/site-packages/numpy/core/include
-I/usr/local/include -I/usr/local/include/freetype2 -I/usr/local/include
-I. -I/usr/local/include/python3.4m -c src/ft2font_wrapper.cpp -o
build/temp.solaris-2.10-sun4v.32bit-3.4/src/ft2font_wrapper.o
In file included from /usr/local/include/python3.4m/Python.h:8:0,
from src/mplutils.h:21,
"_FILE_OFFSET_BITS" redefined
#define _FILE_OFFSET_BITS 64
^
In file included from /usr/include/sys/int_types.h:34:0,
from /usr/include/sys/stdint.h:17,
from /usr/include/stdint.h:17,
from
/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/include/stdint.h:9,
from src/mplutils.h:11,
note: this is the location of the previous definition
#define _FILE_OFFSET_BITS 32
^
In file included from /usr/local/include/python3.4m/Python.h:36:0,
from src/mplutils.h:21,
/usr/include/unistd.h:496:75: error: conflicting declaration of C function
'void swab(const void*, void*, ssize_t)'
extern void swab(const void *_RESTRICT_KYWD, void *_RESTRICT_KYWD,
ssize_t);
^
In file included from /usr/local/include/python3.4m/Python.h:34:0,
from src/mplutils.h:21,
/usr/include/stdlib.h:144:13: note: previous declaration 'void swab(const
char*, char*, ssize_t)'
extern void swab(const char *, char *, ssize_t);
^
error: command 'gcc' failed with exit status 1
I have gcc on the box. I also installed the C compiler for Solaris (cc),
but I couldn't seem to find an option to switch it so that it uses cc
rather than gcc.
Thanks again for all you do, and thanks for the help.
-- BMW
Post by Benjamin Root
Bryan,
If you subscribe to the list you will be able to post with out moderation.
Does this happen with any of the other sample data?
I don't think that `get_sample_data` is doing you any good here as you
are passing it an absolute path (from `os.getcwd()`) which is passed into
`os.path.join` which when it encounters and absolute path discards
everything to the left so that line is just returning back your input.
Does it work to open any other png or does _only_ this png have issues?
You are reaching into the nominally private parts of the mpl api here, I
would suggest using `mpl.image.imread` instead.
It might be worth using something like PIL/pillow, imread (
https://pypi.python.org/pypi/imread), imageio (https://imageio.github.io/)
or scikit-image for alternate implementations of png readers.
None of the core developers have access to a Solaris machine so it is
very difficult for us to provide much better help on this.
Tom
On Sun, May 24, 2015 at 1:38 PM Bryan Williams <
Post by Bryan Williams
Good afternoon,
My name is Bryan Williams. I work for the Florida Forest Service in
their Forest Logistics and Support Bureau.
I’m working on a program that takes weather data and visualizes it using
matplotlib and Basemap. I’m currently having an issue with matplotlib 1.4.3
for Python 3.4.3 running under Solaris 5.10. I am getting a Runtime Error
whenever I try calling the read_png file from matplotlib._png. (I’m using
this to add a small .png file of the Forest Service’s sheld to the
File "drawmaps.py", line 845, in <module>
arr_lena = read_png(fn)
RuntimeError: Error closing dupe file handle
I don’t quite understand the error I’m getting, and as you can see, the
traceback gives very little information. I also tried Google for help, but
to no avail; entering the error message as is into Google doesn’t return
anything relating to the problem, and putting quotes around “Error closing
dupe file handle” yields about 10 results, with one of them being an
unanswered question from 2014 regarding the same issue.
SunOS [server name withheld] 5.10 Generic_141444-09 sun4v sparc
SUNW,SPARC-Enterprise-T5220
I built Python 3.4.3 from source and installed matplotlib through pip,
and didn’t make any changes to the matplotlibrc file.
I was able to reproduce the problem again running these commands in the
Python interactive prompt, which emulates the snippet of script that causes
Python 3.4.3 (default, May 15 2015, 13:52:23)
[GCC 4.9.2] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
from matplotlib._png import read_png
from matplotlib.cbook import get_sample_data
import os; path=os.getcwd()
fn = get_sample_data(path + '/resources/shield.png', asfileobj=False)
arr_lena = read_png(fn)
File "<stdin>", line 1, in <module>
RuntimeError: Error closing dupe file handle
If you’d like a copy of the problem script, please let me know. Any and
all help is greatly appreciated.
Thank you in advance!
-- BMW
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Eric Firing
2015-05-28 17:50:45 UTC
Permalink
Post by Bryan Williams
I have gcc on the box. I also installed the C compiler for Solaris (cc),
but I couldn't seem to find an option to switch it so that it uses cc
rather than gcc.
Maybe you can do this with an environment variable?

export CC=/usr/bin/cc

It does look like there is a problem with scrambled environments. The
redefinition warning looks potentially troublesome; and the error looks
like a conflict between two versions of the standard C library.

From "man swab" on Solaris:

NAME
swab - swap bytes

SYNOPSIS
#include <stdlib.h>

void swab(const char *src, char *dest, ssize_t nbytes);

XPG4, SUS, SUSv2, SUSv3
#include <unistd.h>

void swab(const void *restrict src, void *restrict dest,
ssize_t nbytes);

I think you want the second version, consistently, but something is also
hitting the first version.

Maybe "XPG4" or one of the other 4 options needs to be defined when each
library is compiled with /usr/bin/cc? I think the stdlib declaration is
old; the unistd version is more modern.

That's all very vague, I know. Obviously, I don't actually know how to
solve the problem.

Eric



------------------------------------------------------------------------------
Bryan Williams
2015-05-29 12:54:59 UTC
Permalink
It seems like it is a conflict of libraries...I've zeroed in to these two
errors:

/usr/include/unistd.h:496:75: error: conflicting declaration of C function
'void swab(const void*, void*, ssize_t)'

and

/usr/include/stdlib.h:144:13: note: previous declaration 'void swab(const
char*, char*, ssize_t)'

I executed a find command and here's what came up:

~>sudo find / -name stdlib.h
*/opt/csw/include/c++/4.9.2/tr1/stdlib.h*
/opt/solarisstudio12.4/lib/compilers/include/CC/gnu/stdlib.h
/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stdlib.h
/opt/solarisstudio12.4/lib/compilers/CC-gcc/include/c++/4.8.2/tr1/stdlib.h
*/usr/include/stdlib.h*
From what it seems, it's calling stdlib.h from the /usr/include folder when
it should be calling it from /opt/csw/include. I'm going to look into
setup.cfg (that or perhaps hack setup.py) and see if it's at all possible
to change it so that it looks in the right one, and then I'll try building
it again.
Post by Bryan Williams
I have gcc on the box. I also installed the C compiler for Solaris (cc),
but I couldn't seem to find an option to switch it so that it uses cc
rather than gcc.
Maybe you can do this with an environment variable?
export CC=/usr/bin/cc
It does look like there is a problem with scrambled environments. The
redefinition warning looks potentially troublesome; and the error looks
like a conflict between two versions of the standard C library.
NAME
swab - swap bytes
SYNOPSIS
#include <stdlib.h>
void swab(const char *src, char *dest, ssize_t nbytes);
XPG4, SUS, SUSv2, SUSv3
#include <unistd.h>
void swab(const void *restrict src, void *restrict dest,
ssize_t nbytes);
I think you want the second version, consistently, but something is also
hitting the first version.
Maybe "XPG4" or one of the other 4 options needs to be defined when each
library is compiled with /usr/bin/cc? I think the stdlib declaration is
old; the unistd version is more modern.
That's all very vague, I know. Obviously, I don't actually know how to
solve the problem.
Eric
------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Loading...