Opened 16 years ago

Closed 16 years ago

Last modified 15 years ago

#1044 closed bug (fixed)

crash when creating new GRASS location on Windows

Reported by: lubaby Owned by: telwertowski
Priority: critical: causes crash or data corruption Milestone:
Component: GRASS Version: Trunk
Keywords: Cc: jef@…
Must Fix for Release: Yes Platform: All
Platform Version: Awaiting user input: no

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".

Change History (17)

comment:1 by marcopx, 16 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

comment:2 by marcopx, 16 years ago

Milestone: Version 0.9.2Version 1.0
Type: bugenhancement

comment:3 by timlinux, 16 years ago

Type: enhancementdefect

comment:4 by msieczka, 16 years ago

Summary: Crash when creating new GRASS locationcrash when creating new GRASS location on Windows
Type: defectbug
Version: HEAD0.11.0

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.

in reply to:  4 comment:5 by marcopx, 16 years ago

Cc: jef@… added

Replying to 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?

comment:6 by telwertowski, 16 years ago

Owner: changed from nobody to telwertowski

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.

comment:7 by telwertowski, 16 years ago

Resolution: fixed
Status: newclosed

Fixed by r9287.

in reply to:  7 comment:8 by cgsbob, 16 years ago

Resolution: fixed
Status: closedreopened

Replying to telwertowski:

Fixed by r9287.

I think there is a problem with r9287. 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*)
make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o] Error 1
make[1]: *** [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

comment:9 by msieczka, 16 years ago

Version: 0.11.0HEAD

And I get a foloowing error in r9290:

[ 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*)
make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o] Error 1
make[1]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2
make: *** [all] Error 2

comment:10 by msieczka, 16 years ago

Platform: WindowsAll

comment:11 by telwertowski, 16 years ago

Status: reopenednew

These last two items were caused by r9288 which upgraded the plugin from Qt3 to Qt4. X11 needed a QPainter declaration that Mac did not. Fixed by r9291.

comment:12 by telwertowski, 16 years ago

Resolution: fixed
Status: newclosed

comment:13 by msieczka, 16 years ago

Resolution: fixed
Status: closedreopened

Yet another error, in r9291:

[ 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
make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmapcalc.o] Error 1
make[1]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2
make: *** [all] Error 2

comment:14 by telwertowski, 16 years ago

Status: reopenednew

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.

comment:15 by telwertowski, 16 years ago

Resolution: fixed
Status: newclosed

The last issue is fixed by gcc 4.3 compatibility changes in r9292.

comment:16 by msieczka, 16 years ago

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

comment:17 by (none), 15 years ago

Milestone: Version 1.0.0

Milestone Version 1.0.0 deleted

Note: See TracTickets for help on using tickets.