Announcement

Collapse
No announcement yet.

Strange Error - Machine dependent

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Strange Error - Machine dependent

    Here is a strange one - my big PB-DOS program worked fine until a few weeks ago, but now the data read from a disk file is being corrupted (zeros showing up in arrays when clearly the data is correct in the file). Weirdly enough, this only happens when the program is compiled on my desktop. If I compile exactly the same codes on my portable (with the same PB compile settings, I think), and copy the .exe and .pbc files to the desktop, then it runs fine. I've checked memory allocations, PB settings, etc... Any ideas out there?

    ------------------

  • #2
    This happened to me (not the exact same thing, but close
    enough) when I "upgraded" from Win/95 to Win/98.


    ------------------
    There are no atheists in a fox hole or the morning of a math test.
    If my flag offends you, I'll help you pack.

    Comment


    • #3
      Although you have not given us any details of the O/S you are using, or whether the app is running over a network, etc, it sounds suspiciously like a memory manager problem... Microsoft has produced a number of problematic versions of EMM386 over the years... The problem is that when they release "corrected" versions of some of these programs, they retained the original time/date stamp of the file, so discriminating between them is nigh on impossible.

      Also, if you reboot in MSDOS mode, and recompile, does the problem occur then too?

      What other information can you give us about your app, the problem, and your O/S?


      ------------------
      Lance
      PowerBASIC Support
      mailto:[email protected][email protected]</A>
      Lance
      mailto:[email protected]

      Comment


      • #4
        I'm on Win98 Second Edition, for both computers. Neither is on a network. The program is reading in a real array which is multiplied by another real array that is set to values which are specified when the PBC is executed (and it is in a CHAINED PBC where the problem occurs). I also suspect some sort of memory error, and my program is very close to the memory limits. But, it worked fine before and I didn't upgrade the operating system or PB, nor did I change the code! Strange!

        ------------------

        Comment


        • #5
          If you step through the code with the debugger, can you watch the variable(s) and see them get loaded from disk sucessfully?

          Also, did you add $ERROR ALL ON to the code in case you are accidentally overlooking some kind of error condition?



          ------------------
          Lance
          PowerBASIC Support
          mailto:[email protected][email protected]</A>
          Lance
          mailto:[email protected]

          Comment


          • #6
            ...it sounds suspiciously like a memory manager problem... Microsoft has produced a number of problematic versions of EMM386 over the years...
            Lance, that's the same answer as on my problem(s)... I'm using both EMM386 and QEMM386 (no not at the same time )... why do all other programs that use EMS work without a flaw and does PowerBasic suffer from "problematic versions"...?

            My problem is that in order to use the Evaluate and Watch features I MUST have loaded an EMS memory manager, otherwise PB will crash (no, this still hasn't been solved).
            Besides, it's necessary when you use VIRTUAL arrays...
            But when using such an EMS memory manager we suddenly get other strange errors, like Daniel described here and I in another thread.

            Sigh, I wish it was possible to have 64MB of conventional memory

            Regards,

            ------------------
            Sebastian Groeneveld
            mailto:[email protected][email protected]</A>
            Sebastian Groeneveld
            mailto:[email protected][email protected]</A>

            Comment


            • #7
              Using EMS is not a matter of making a single function call. EMS provides a broad range of functionality that can be handled in many different ways. PowerBASIC makes significant (and dynamic) use of EMS functionality when possible, so it exercises the EMS driver pretty well. This makes PowerBASIC a bit more likely to turn up EMS bugs than programs that just allocate a few static pages.

              The solution is perfectly simple. If you have a buggy EMS driver, replace it with one that works properly.

              ------------------
              Tom Hanlin
              PowerBASIC Staff

              Comment


              • #8
                Tom ..

                I don't want to start a fight. Nobody ever wins a fight.

                The statement(s) made about different operations of the EMS
                world are sure enough true and sure enough places where
                things can and do go wrong. I know that's true as do others
                here that have run into this.

                However ...

                It would be most helpful, given the fact that this problem has
                come up several times and *IS* a problem, to do something to
                help the interested.

                It is perfectly proper to say that M/S, for example, has released
                several different EMD drivers with the same name and the same file
                date and time, of which some work and some do not.

                It would be *VERY* informative to know exactly which ones the PB
                staff is using to certify PowerBASIC code upon that "do" work as
                you intend. Yes, it may be that some do; some don't, but the fact
                almost *HAS* to be that the one(s) that does(do) have different
                check sums! Why, instead of simply posting, 'some do and some
                don't .. if your's doesn't get one that does!', don't you simply post
                the exact file date, time, and checksum of the goodie(s), together
                with whatever CRC checksum program one needs to verify all this?

                Yes, M/S and copyright distributions and all are involved. However,
                given the right information, the PowerBASIC user can ultimately get
                to the bottom of this deal.

                As an expansion .. posting which version of this or that which also
                fits together with this or that will be a help too! Posting the
                testbed configuration for processor(s) involved, other hardware
                mix(es), interface notation and the way that these things are loaded
                as to sample factory proof-up work, without offering any kind of
                guarantee would be nice. You don't have to assume liability to be
                more helpful. Nor does the data have to constitute any kind of an
                endorsement at all .. I'm not a lawyer, but you folks do have counsel
                that can help you draft the required indemnification language if you
                need that done.

                Your faithful would have even more reason to respect and admire this
                fine product and company, as a personal opinion... A nice FAQ and
                'what you can, perhaps, expect, without guarantee of any kind note
                would, I think, make a lot better bond with the folks who run into
                this. No you can't please everyone and no a ton of variations on the
                theme work! Just give us some baseline thoughts on what you use for
                certification if at all possible?

                ------------------
                Mike Luther
                [email protected]
                Mike Luther
                [email protected]

                Comment


                • #9
                  Mike, and other interested parties... PowerBASIC sell compilers, not Operating Systems, hardware, or memory manager software. While we try very hard to provide a high level of support for our own products, and we simply do not have the resources and time to purchase and test software from other companies, AND continue to maintain support levels on our own products. We have to draw a line in the sand somewhere, and providing "support" for other companies software has to be left to the company that created the software.

                  As Tom noted, PowerBASIC can stretch any memory manager software to it's extreme. It your memory manager software works, then PowerBASIC will too. If not, then it probably won't.

                  There are literally dozens of different memory managers around, and in mnost cases, many different versions abound for each too... in at least one case I can recall, not only is the file/time stamp the same between two versions, but the file length is identical between a "problematic" version and a "working" version. Further, there is a definite level of inter-dependence between the memory manager software, the O/S and the hardware involved. This makes the problem of creating a list of "known good" memory managers even more difficult. QEMM's stealth mode is a good example of software whose success depends on hardware configuration along with software configuration. Does anyone know how many versions of QEMM were released? At last count, they were up to version 8.02, and QEMM has had dozens of supplimentary patches over the years.

                  That said, I'm more than willing to help put together a list if people are willing to help with the chore. Such a list would need to include details of the file name, version, date/time stamp, the file size, and a CRC of the file (to help differentiate between "like" versions). There is a CRC algorithm in the FAQ forum to use, so we can get duplicatable CRC values.

                  The proviso of such a list would have to be "No guarantee... Use these results as a guideline only" on any of the files we may list, given the distinct possibility of inter-dependence problems.

                  So, how about it? Lets work _together_ on this, instead of flaming us for problems with other brands of software.

                  Anyone interested in this idea?


                  ------------------
                  Lance
                  PowerBASIC Support
                  mailto:[email protected][email protected]</A>
                  Lance
                  mailto:[email protected]

                  Comment


                  • #10
                    As I understand what is being said, there is an excellent chance that my problem is caused by a strange interaction between the Powerbasic compiler and the Windows-provided memory manager. Are there any suggestions you can offer other than "buy another memory managera" (I bought and threw away QEMM several years ago). Are there any hints you can provide, such as "twiddle these parameters in EMM and those parameters in PB_DOS", that might possibly get me back to where I was a month ago? This isn't a situation where I am using something weird that, of course, no one can expect you to buy and test. This is the default memory manager of the main operating system used by PC's around the world!


                    ------------------

                    Comment


                    • #11
                      Daniel, are you sure that Win98SE is the "Main O/S of the world"?

                      Seriously, it is clear the problem only shows up on one of your two PC's, right? Have you attempted to compare settings between the two PC's? Have you tried experimenting with any of the memory management options in Windows? If you reboot to DOS does it still occur? Has anyone else been able to compile your code and encounter the same problem?

                      Unfortunately, there is little we can do to help unless we can duplicate your problems for ourselves. In your case, you say nothing has changed in the past month, but clearly something has done... You are the only one that may be able to answer that.

                      Regretably, all I can do (at this point in time) is wish you luck with resolving the problem.



                      ------------------
                      Lance
                      PowerBASIC Support
                      mailto:[email protected][email protected]</A>
                      Lance
                      mailto:[email protected]

                      Comment

                      Working...
                      X