Report bugs!

Posted on Updated on

You’ll rarely find software without bugs. The same holds true for TopoToolbox. While Dirk and I were very careful to avoid bugs by using error checking and input argument parsing, amongst other, some bugs made it to the finally published version 2. One such bug happened to be an error message issued when calling functions that use inputParser. In various instances we called the function with a capital i (InputParser), which did not issue an error for our MATLAB version at the time we were developing the code. However, MATLAB apparently became more case-sensitive in later versions. All of these bugs should be removed in the latest version of TopoToolbox found in the trunk directory.

Still, there are some more functions that contain bugs. One super-buggy function is preprocessapp which I want to update since long.

Now that MATLAB 2014b has been released, we are awaiting some new bugs to appear. The Mathworks has introduced some fundamental changes to MATLAB’s graphics system which may be incompatible with our code. Correcting for these compatibility issues is tedious since we want to keep our code clean while retaining it compatible with older versions. We are very much aware that not everyone has MATLAB (yes, it’s expensive) nor its latest version.

How can you help us? Report bugs here (use the comments)! Let us know about problems that you face with our code. We know how frustrating it is to work with buggy code.


8 thoughts on “Report bugs!

    Julien Charreau said:
    November 25, 2015 at 2:15 pm

    Dear Wolfgang and Dirk,
    I just downloaded your great Topotoolboxe but I failed to use it even the basic functions. I first launched topoapp, opened one of your DEM example, ran “Flow” to set the parameters. I can dispaly the stream network but then everything seems to bug. I tried to make a simple topographic profile but I get the following error message:
    “Error using addobject
    The value of ‘handle’ is invalid. It must satisfy the function: @(x)isnumeric(x).

    Error in topoapp/addobject (line 14)

    Error in pickprofile (line 33)
    [app] = addobject(app,P,’handle’,h,’visible’,true);

    Error while evaluating PushTool ClickedCallback”

    Then all butons of the tool bar turn gray and I must close the windows and restart topoapp.

    Manage object remain empty even if I ran Flow ahead.

    I’m using Matlab 2015a and, so far I think I have the Image Acquisition tool.

    If you have any idea how to fix these problems I would very much apreciate.

    best regards,

    wschwanghart responded:
    November 26, 2015 at 9:49 am

    Dear Julien Charreau, thanks for letting us know. We also just realized that topoapp has serious problems with the new MATLAB graphics engine introduced in version 2014b. I assume you have this or a more recent version. I will talk to Dirk shortly about how to proceed with this issue. It seems that topoapp will require substantial overhaul.
    Thanks again for your message. I’ll keep you informed.
    Cheers, Wolfgang

    Pietro Matteoni said:
    January 10, 2019 at 2:35 pm

    Hi there!

    First of all thanks for this great toolbox, I’m trying to get my hands on it for some planetary geomorphological anlysis (rivers on Saturn’s moon Titan).

    I must say that I’m encoutering problems with the FLOWobj function, while others functions work properly so I assume all the directories are finely set-up.

    As I try to give the command

    DEM = GRIDobj(‘srtm_bigtujunga30m_utm11.tif’);

    FD = FLOWobj(DEM);

    This is what I get:

    Error using images.internal.morphmex
    Invalid MEX-file ‘C:\Program
    Missing dependent shared libraries:
    ‘CONCRT140.dll’ required by ‘C:\Program

    Error in images.internal.morphop (line 101)
    B = images.internal.morphmex(ocvMethod, B, logical(nhood),
    zeros(size(nhood)), unpacked_M);

    Error in imerode (line 87)
    B = images.internal.morphop(A,se,’erode’,mfilename,varargin{:});

    Error in GRIDobj/identifyflats (line 64)
    flats = imerode(dem,nhood) == dem;

    Error in FLOWobj (line 342)
    [Iobj,SILLSobj] = identifyflats(DEM);

    In that library, the morphmex.mexw64 is there so I don’t really know how to go around this.

    If you got any ideas I’d be happy hear those,
    Thanks a lot and see you at EGU 2019!


      wschwanghart responded:
      January 10, 2019 at 2:52 pm

      Hi Pietro, well, that’s a bug that a colleague of mine also encountered with 2018b. It seems to be a problem with the image processing toolbox, not with TopoToolbox, that we eventually solved by reinstalling MATLAB. This is something that Mathworks should be (made) aware of. Consider issueing a bug report if the problem remains!
      See you at the EGU!

        Pietro said:
        January 10, 2019 at 4:59 pm


        Thanks a lot for the immediate reply. I tried reinstalling MATLAB (same version) but the problem persists. I’ll definitely report it to Mathworks, but maybe you can suggest me an earlier MATLAB version where such bug is known to not exist?

          wschwanghart responded:
          January 10, 2019 at 10:44 pm

          Hi Pietro. The problem didn’t exist in 2018a. At least to my knowledge…

            Pietro said:
            January 12, 2019 at 2:41 pm

            I confirm that the bug doesn’t seem to exist on 2018a.

            Thank you so much!

    Bruno Colavitto said:
    February 2, 2019 at 9:43 pm


    Thanks for this great app!! It really helped me with my PhD thesis, trying to find out neotectonic’s signal in drainage networks from the southern central Andes. I’ve used SWATHobj directly as a function and it always worked well. But recently a colleague was trying to perform a swath profile from a stream object directly in topoapp and encountered a little bug.

    Digging a little bit it seems that the problem is in swathmapping.m function. In line 306 and 313 as a parameter of SWATHobj function appears ‘plot’. Looking into older versions it seemed that sometime was useful for SWATHobj.m, but not anymore. Deleting this last parameter apparently solves the problem, I think it doesn’t have to be replaced by any other parameter.

    SW = STREAMobj2SWATHobj(S,app.DEM,’dx’,dx,’dy’,dy,’width’,…

    I hope this helps. Again, thanks!!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.