Wednesday, September 26, 2012

Release != Debug: strange C++ problem

I've been working on the new Managed Switch Port Mapping Tool v2 quite a bit lately and ran into a strange problem: one function in the program (saving to an XML file) was causing it to hang up in Release mode, but never in Debug mode. The program imported three static libraries, one is the BCGSoft 18 library (cool stuff), another is the CodeProject Ultimate Grid (I'm the KVT in the source code notes) and the last is the CodeProject Ultimate Toolbox. Of the three, the BCGSoft libary is the most recent addition. This problem never happened in and it doesn't use the BCGSoft library.

The first thing I did was convert the Release version code for all of them so that it included Debug info. That was a bit tedious, but went OK. Then I was able to press the Save button and step through to see where it was hanging up. That didn't go so well. It would hang up in different places. It seemed to be a stack or memory issue. I tried increasing stack and heap in the main executable, but it didn't help.

Finally after 5 hours, I decided to look and see just how much of the Ultimate Toolbox library I was actually using. It turns out I was only using the OXParser and OXRegistryItem. By moving them and their supporting files (roughly 6 other cpp and h) into the main executable, I was able to remove the linkage to the UTlibStaticR. I suspect that the BCGSoft library has some functions with the same name as Ultimate Toolbox, but I wasn't going to look through pages and pages of import listings to see wheich ones. Eliminating the library was simpler. And, yes, I put back the normal release settings to remove debugging from the release version and it works fine now.

Thursday, September 20, 2012

Managed Switch Port Mapping Tool v1.99.9.8 Released

Yes, one more release of Managed Switch Port Mapping Tool v1.99.9.X. Since v2.0 is in beta I didn't really want to put out another release, but this was necessary. In fact, it was a beta tester who pointed out this problem and existed in both versions. It's actually not a bug, but more of a misinterpretation of the local network.

By default we activate the Ping Sweep function and prepopulate the Ping Sweep target table based on the computer's IPv4 address and subnet mask. That's all well and good if it's a mask, but if it's a mask as would happen in a 10.x.x.x private network, it creates a massive range of IPs that take forever to ping. The program doesn't hang, but it just takes a long time to deal with the range of IPs.

Now in v1.99.9.8 when you start a switch mapping, if it sees a large IP target range, you are given the opportunity to skip doing the ping sweep and continue on. You can always disable Ping Sweep or go in and change the target IP range.

Enjoy the new version:


Friday, September 7, 2012

ipPulse 1.83 Released

ipPulse was updated yesterday with a new minor version release 1.83.

This version adds results column sorting by clicking on the headers when the scanner is not in Run mode. It also adds the ability to drag and drop results headers so that you can reorder them - however, when you exit the program they go back to their original order. Another visible change is to the column 'autosizing'. There are now two right click options, one to autosize the visible columns and another to autosize and make visible all columns. Note that you can control which columns are visible in Settings.

Please visit