I worked for Borland in the UK doing support for Turbo C 1 to 1.5. Most contact was via mail or telephone in those days. Bugs were sent over to the US after we did some triage to check if they could be reproduced; I think it was all stored in Reflex (a Borland-produced database) and we got copies of the database periodically.
We had Compuserve, MCI mail, Bix & Cix accounts for online support, but most things were over the phone. We'd normally mail customers replacement floppies, or sometimes we would fax over instructions if the patch was small enough. IIRC there was a patch for the first version of Turbo C which did floating point constant-folding in the wrong order for division (a bit of a show-stopper given the first example in K&R).
I used to phone my US colleagues in the late afternoon to find out what was happening to bugs or if they already knew about a new issue. We'd use MCI mail to communicate with the US over an X.25 Pad system.
Most of the support issues were solved by turning on all of the compiler warnings after the user sent over the source code (in the mail) and working through them. Lots of users of Turbo C were still writing pre-ANSI K&R style C with some fairly dodgy casts, so often the bugs were in their code. Sometimes it was things like double-to-single promotion with function prototypes where classic K&R declarations
extern float myfunc();
float myfunc(p)
float p
{}
actually defines p
to be a double
due to type promotion (I've forgotten the exact details as it's nearly 30 years ago).
Actual bugs were rare; the only other one I can remember is that code like this:
outportb(0x3fe,inportb(0x3fe)&0x55)
didn't work if you included the <dos.h>
header file which turned the function calls into inline x86 calls and the compiler threw away the result of the inportb
for some reason.