App Freezing Issues - Possible IMDD Issue

Hi Everyone,

I also have another issue that I’m starting to lose customers over, possibly to do with the IMDD tables.

The app is a visitor/contractor/staff sign-in sign-out program that has a manned mode, i.e. a receptionist can sign-in/out people, and also an unmanned kiosk mode, i.e. the people sign themselves in/out at a touch screen kiosk.

For years we have been plagued with freezing issues with the program is running in full screen kiosk mode. It used to be that the kiosk might freeze once every few days. We would advise the customer to setup a daily automatic reboot of the PC early in the morning and this would usually sort out the freezing issue for good.

Two version releases ago we implemented a change to the kiosk to allow for faster filtering/searching of the staff and visitor tables. Instead of searching the MSSQL database backend for records we implemented 2 IMDD tables: one for staff and the other for visitors. These tables are filled from Dynamic File Driver SQL scripts when the program launches and are synced with new records and updated records every 10 seconds by a procedure that is STARTed via a timer on the main thread. If the kiosk is open and is doing something, i.e. a staff member or visitor has started the sign-in/out process, then this sync is skipped. The kiosk window is STARTed on a different thread to the main thread. This is a multi-dll app.

Ever since changing the kiosk window to use the IMDD tables the filtering and searching is definitely faster, but the freezing issues have gotten extremely worse, to the point where I have had to downgrade a customer back to the previous version before this change.

I’m out of ideas as to why this freezing is occurring so much and also how to find the problem. It seems to be random. I can’t get the program to freeze on my testing PC’s, laptops, tablets, VM’s or server. For some customers the freezing is happened many multiple times per day. For others it might happen once or twice a day, or not at all that day.

This is a C8 app that I am in the process of upgrading to C11. I have one customer that I have upgraded to the C11 version and they still have the exact same freezing issues multiple times per day.

What can I do to find the cause of the freezing issues? Are IMDD tables not the right solution for what I’m trying to do?

Any help is greatly appreciated.


I’ve heard of situations where the use of a CriticalSection during certain IMDD accesses helped. But it doesn’t seem like you’re doing a whole lot of stuff to the same table in between threads.

Hi Jeff,

That’s right, we aren’t really doing that much. In the Kiosk mode we only use the IMDD tables for searching, filtering and selecting the record. We then insert/update the original MSSQL record once the visitor/staff person has finished their sign-in/out. Then the IMDD tables get updated with that updated record during the sync that happens every 10 seconds.

The SQL Scripts that checks for record changes uses global last sync date and time fields so we aren’t getting a ton of records each time this runs.

SV suggested I try changing to TPS or SQLite so I’ll try with SQLite for now and will post back here with results.

Any other suggestions are welcome :slight_smile:


An update on this:

I’ve stopped the background sync procedure from starting entirely if the Kiosk is in use, i.e. a Staff or Visitor is signing in/out, and this has stopped the freezing issues. Not sure exactly why but at least the issue is fixed.