Bug report #1044

crash when creating new GRASS location on Windows

Added by Redmine Admin over 12 years ago. Updated about 11 years ago.

Status:Closed
Priority:Low
Assignee:Tom Elwertowski
Category:GRASS
Affected QGIS version: Regression?:No
Operating System:All Easy fix?:No
Pull Request or Patch supplied: Resolution:fixed
Crashes QGIS or corrupts data: Copied to github as #:11104

Description

QGIS (Windows version only) crashes if you are trying to create location with almost same name as exist (the only difference is character case).

Steps to reproduce:
1. Create new GRASS location with name "bug"
2. Now try to create another GRASS location with name "Bug"
3. After last wizard step the QGIS crashes

The problem is that Linux is case sensitive (bug and Bug are two different strings) but in Windows there is impossible to create two files named "bug" and "Bug".

History

#1 Updated by Marco Pasetti - over 12 years ago

I think that the only possible solution is to introduce a name check to prevent this error, telling that the location Bug already exists and repromp for a new name.

Marco

#2 Updated by Maciej Sieczka - about 12 years ago

Bug confirmed under WINE 1.0.0 configured to emulate Win XP, on amd64 Debian testing using Marco's "QGIS 0.11.0 for Windows pre-release testing installer".

Indeed it seems the culprit is Windows is not case-sensitive as GNU/Linux is.

#3 Updated by Marco Pasetti - about 12 years ago

Replying to [comment:4 msieczka]:

Bug confirmed under WINE 1.0.0 configured to emulate Win XP, on amd64 Debian testing using Marco's "QGIS 0.11.0 for Windows pre-release testing installer".

Indeed it seems the culprit is Windows is not case-sensitive as GNU/Linux is.

Absolutely! Windows is NOT case sensitive. As I said two months ago, there would be a simple solution: introduce a name check function to prevent this error, checking if the location's name (that is the folder) already exixts and, if yes, telling that the location Bug already exists and reprompt for a new name.

I donn't know if that should be done in GRASS code; actually I think that we could do that in one of the src\\qgis-dev\\src\\plugins\\grass\\ cpp files

Jurgen?

#4 Updated by Tom Elwertowski about 12 years ago

This also happens on a Mac.

There's already a duplicate name check in qgsgrassnewmapset.cpp. It needs to be made case insensitive for Mac and Win.

#5 Updated by Tom Elwertowski about 12 years ago

  • Resolution set to fixed
  • Status changed from Open to Closed

Fixed by 47dbaf29 (SVN r9288).

#6 Updated by cgsbob - about 12 years ago

  • Resolution deleted (fixed)
  • Status changed from Closed to Feedback

Replying to [comment:7 telwertowski]:

Fixed by 47dbaf29 (SVN r9288).

I think there is a problem with 47dbaf29 (SVN r9288). I'm running qt4.4 and I get this compile error:

Scanning dependencies of target grassplugin
[ 87%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o
In file included from /home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.cpp:18:
/home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.h:99: error: ‘QPainter’ has not been declared
/home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.cpp:523: error: prototype for ‘void [[QgsGrassPlugin]]::postRender(QPainter*)’ does not match any in class ‘QgsGrassPlugin’
/home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.h:99: error: candidate is: void [[QgsGrassPlugin]]::postRender(int*)
maker2: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o] Error 1
maker1: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2
make: *** [all] Error 2

The complete compiler output can be found here: [http://rafb.net/p/SAY4QJ37.html]

#7 Updated by Maciej Sieczka - about 12 years ago

And I get a foloowing error in 98c33097 (SVN r9291):

[ 91%] Generating ui_qgsprojectionselectorbase.h
/home/shoofi/src/straight/qgis-trunk/src/ui/qgsprojectionselectorbase.ui: An invalid icon property 'windowIcon' was encountered.
Scanning dependencies of target grassplugin
[ 92%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o
In file included from /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.cpp:18:
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.h:99: error: 'QPainter' has not been declared
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.cpp:523: error: prototype for 'void [[QgsGrassPlugin]]::postRender(QPainter*)' does not match any in class 'QgsGrassPlugin'
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.h:99: error: candidate is: void [[QgsGrassPlugin]]::postRender(int*)
maker2: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o] Error 1
maker1: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2
make: *** [all] Error 2

#8 Updated by Tom Elwertowski about 12 years ago

  • Status changed from Feedback to Open

These last two items were caused by 034dd533 (SVN r9289) which upgraded the plugin from Qt3 to Qt4. X11 needed a QPainter declaration that Mac did not. Fixed by 2624cdea (SVN r9292).

#9 Updated by Tom Elwertowski about 12 years ago

  • Resolution set to fixed
  • Status changed from Open to Closed

#10 Updated by Maciej Sieczka - about 12 years ago

  • Status changed from Closed to Feedback
  • Resolution deleted (fixed)

Yet another error, in 2624cdea (SVN r9292):

[ 92%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmodel.o
[ 93%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmapcalc.o
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual void [[QgsGrassMapcalc]]::mousePressEvent(QMouseEvent*)':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:278: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:278: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:288: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:288: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual QStringList [[QgsGrassMapcalc]]::checkRegion()':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:494: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:494: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual bool [[QgsGrassMapcalc]]::inputRegion(Cell_head*, bool)':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:549: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:549: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'void [[QgsGrassMapcalc]]::growCanvas(int, int, int, int)':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:957: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:957: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:965: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:965: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'void [[QgsGrassMapcalc]]::save()':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1124: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1124: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1175: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1175: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'bool [[QgsGrassMapcalcConnector]]::tryConnectEnd(int)':
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1990: error: must #include <typeinfo> before using typeid
/home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1990: error: must #include <typeinfo> before using typeid
maker2: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmapcalc.o] Error 1
maker1: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2
make: *** [all] Error 2

#11 Updated by Tom Elwertowski about 12 years ago

  • Status changed from Feedback to Open

Add the line

#include <typeinfo>

after #include <math.h> and try compiling again. I will wait for any other issues before updating svn.

What OS are you using? I will also add a comment that this file is needed for a particular OS so it doesn't get removed again.

#12 Updated by Tom Elwertowski about 12 years ago

  • Status changed from Open to Closed
  • Resolution set to fixed

The last issue is fixed by gcc 4.3 compatibility changes in d0496982 (SVN r9293).

#13 Updated by Maciej Sieczka - about 12 years ago

Buids fine now. I'm on Debian testing amd64, gcc 4.3.1.

#14 Updated by Anonymous about 11 years ago

Milestone Version 1.0.0 deleted

Also available in: Atom PDF