Closed gp-Digi closed 2 years ago
Describe the bug The fsetpos() function call causes a crash.
To Reproduce Compiling a simple example:
#include <stdlib.h> #include <stdio.h> int main(int argc, char **argv) { FILE *pfFile = fopen( "myfile", "rt" ); puts( "call fsetpos()..." ); fsetpos( pfFile, 0 ); puts( "Done" ); return 0; }
The result of executing the compiled code
call fsetpos()... Killed by SIGSEGV pid=0x0c66 ppid=0x0a2b tid=0x0001 slot=0x00ee pri=0x0200 mc=0x0001 ps=0x0010 G:\PROJECTS\M\~\E\A.EXE A 3:000f0053 cs:eip=0000:02120053 ss:esp=0000:00000000 ebp=0212fe00 ds=0000 es=1d400dc8 fs=0000 gs=0040 efl=00000000 eax=0212ff8c ebx=0212fdc8 ecx=1ffb645c edx=0212fddc edi=0000150b esi=00000001 Creating 0C66_01.TRP Moved 0c66_01.TRP to C:\6221f358-0c66_01-A-exceptq.txt
Contents of the .TRP file
______________________________________________________________________ Exception Report - created 2022/03/04 11:09:12 ______________________________________________________________________ LIBC: Killed by SIGSEGV Hostname: DigiWrkPlace OS2/eCS Version: 2.45 # of Processors: 2 Physical Memory: 3487 mb Virt Addr Limit: 2048 mb Exceptq Version: 7.11.5-shl BETA8 (Jun 1 2020 18:37:02) ______________________________________________________________________ Exception C0000005 - Access Violation ______________________________________________________________________ Process: G:\PROJECTS\M\~\E\A.EXE (03/04/2022 11:09:04 89,305) PID: C66 (3174) TID: 01 (1) Priority: 200 Filename: D:\UNIXROOT\USR\LIB\LIBCN0.DLL (08/27/2021 01:13:22 1,266,106) Address: 005B:1EEF54F1 (0001:000754F1) Cause: Attempted to read from 00000004 (not a valid address) ______________________________________________________________________ Failing Instruction ______________________________________________________________________ 1EEF54E1 MOV EBP, ESP (89e5) 1EEF54E3 SUB ESP, 0x18 (83ec 18) 1EEF54E6 MOV DWORD [ESP+0xc], 0x0 (c74424 0c 00000000) 1EEF54EE MOV EAX, [EBP+0xc] (8b45 0c) 1EEF54F1 >MOV EDX, [EAX+0x4] (8b50 04) 1EEF54F4 MOV EAX, [EAX] (8b00) 1EEF54F6 MOV [ESP+0x4], EAX (894424 04) 1EEF54FA MOV [ESP+0x8], EDX (895424 08) ______________________________________________________________________ Registers ______________________________________________________________________ EAX : 00000000 EBX : 0212FF80 ECX : 000202C2 EDX : 1D3A90BC ESI : 00000000 EDI : 00000000 ESP : 0212FF30 EBP : 0212FF48 EIP : 1EEF54F1 EFLG : 00010206 CS : 005B CSLIM: FFFFFFFF SS : 0053 SSLIM: FFFFFFFF EAX : not a valid address EBX : read/write memory on this thread's stack ECX : read/write memory at 0002:000002C2 in A EDX : read/write memory at 0003:000090BC in LIBCN0 ESI : not a valid address EDI : not a valid address ______________________________________________________________________ Stack Info for Thread 01 ______________________________________________________________________ Size Base ESP Max Top 00100000 02130000 -> 0212FF30 -> 0212D000 -> 02030000 ______________________________________________________________________ Call Stack ______________________________________________________________________ EBP Address Module Obj:Offset Nearest Public Symbol -------- --------- -------- ------------- ----------------------- Trap -> 1EEF54F1 LIBCN0 0001:000754F1 0212FF48 000100A7 A 0001:000000A7 between _main + 46 and ___do_global_dtors - 19 0212FF78 00010027 A 0001:00000027 between __text + 27 and _main - 3A 0212FFE0 1EEB384B LIBCN0 0001:0003384B ______________________________________________________________________ Labels on the Stack ______________________________________________________________________ ESP Address Module Obj:Offset Nearest Public Symbol -------- --------- -------- ------------- ----------------------- 0212FF34 1EEC8C10 LIBCN0 0001:00048C10 0212FF4C 000100A7 A 0001:000000A7 between _main + 46 and ___do_global_dtors - 19 0212FF60 1EE812BB LIBCN0 0001:000012BB 0212FF74 1EE9A103 LIBCN0 0001:0001A103 0212FF7C 00010027 A 0001:00000027 between __text + 27 and _main - 3A 0212FF90 1EEE9990 LIBCN0 0001:00069990 0212FFC4 1EE9A0A4 LIBCN0 0001:0001A0A4 0212FFE4 1EEB384B LIBCN0 0001:0003384B 0212FFEC 1FFB91E0 DOSCALL1 0002:000091E0 Can not open DOSCALL1.DLL (23) ______________________________________________________________________ Stack Contents from ESP-100 to Stack Base (ESP = 0212FF30) ______________________________________________________________________ --addr-- --------------dwords--------------- -----chars------ 0212FE30 : F96DCB4C F96DCB1C F96DCB4C FFED8709 : L.m...m.L.m..... 0212FE40 : 00000160 00000160 0000EAD8 FA704AB0 : `...`........Jp. 0212FE50 : 0008F000 0000EBDC FFF2C02E F96DCAD8 : ..............m. 0212FE60 : F96DCCFC F96DCCFC FFFFFFFF F96DCB1C : ..m...m.......m. 0212FE70 : 00000000 0000150B 00000053 00000053 : ........S...S... 0212FE80 : 00000000 00000000 00000000 0212FF80 : ................ 0212FE90 : 000202C2 1D3A90BC 0212FF48 1EEF54F1 : ......:.H....T.. 0212FEA0 : 0000005B 00010206 0212FF30 00000053 : [.......0...S... 0212FEB0 : 1D3A9114 1D3A9114 0212FED8 1EEDDECF : ..:...:......... 0212FEC0 : 00010018 00040000 00000040 0212FEEC : ........@....... 0212FED0 : 0212FEF0 00010042 0212FF18 1EEEAA32 : ....B.......2... 0212FEE0 : 1D3A9114 00040000 00000040 000001A4 : ..:.....@....... 0212FEF0 : 00001499 00002010 00000001 1EEFBB9C : ..... .......... 0212FF00 : 1D3A908C 00000000 0212FF28 0212FF80 : ..:.....(....... 0212FF10 : 1D3A908C 00000000 0212FF48 1EEFBCD1 : ..:.....H....... 0212FF20 : 0001004A 00010043 00010040 00000040 : J...C...@...@... 0212FF30 : 00000001 1EEC8C10 00000001 00000000 : ................ 0212FF40 : 00000000 00000000 0212FF78 000100A7 : ........x....... 0212FF50 : 00000000 00000000 00020008 0212FFDC : ................ 0212FF60 : 1EE812BB 00000001 00000000 00000000 : ................ 0212FF70 : 0212FFE0 1EE9A103 0212FFE0 00010027 : ............'... 0212FF80 : 00000001 0212FF94 20030180 FFFFFFFF : ........... .... 0212FF90 : 1EEE9990 0212FF9D 00000000 5C3A4780 : .............G:\ 0212FFA0 : 6A6F7270 73746365 7E5C4D5C 615C655C : projects\M\~\e\a 0212FFB0 : 6578652E 00000000 00000000 00000050 : .exe........P... 0212FFC0 : 00000020 1EE9A0A4 00000001 00000000 : ............... 0212FFD0 : 00000000 00000000 00000000 00000000 : ................ 0212FFE0 : 00000000 1EEB384B 00000001 1FFB91E0 : ....K8.......... 0212FFF0 : 00001499 00000000 02130000 02130C75 : ............u... ______________________________________________________________________ Memory addressed by EBX (0212FF80) for 128 bytes ______________________________________________________________________ --addr-- -----dwords------ ---------bytes--------- -chars-- 0212FF80 : 00000001 0212FF94 : 01 00 00 00 94 FF 12 02 : ........ 0212FF88 : 20030180 FFFFFFFF : 80 01 03 20 FF FF FF FF : ... .... 0212FF90 : 1EEE9990 0212FF9D : 90 99 EE 1E 9D FF 12 02 : ........ 0212FF98 : 00000000 5C3A4780 : 00 00 00 00 80 47 3A 5C : .....G:\ 0212FFA0 : 6A6F7270 73746365 : 70 72 6F 6A 65 63 74 73 : projects 0212FFA8 : 7E5C4D5C 615C655C : 5C 4D 5C 7E 5C 65 5C 61 : \M\~\e\a 0212FFB0 : 6578652E 00000000 : 2E 65 78 65 00 00 00 00 : .exe.... 0212FFB8 : 00000000 00000050 : 00 00 00 00 50 00 00 00 : ....P... 0212FFC0 : 00000020 1EE9A0A4 : 20 00 00 00 A4 A0 E9 1E : ....... 0212FFC8 : 00000001 00000000 : 01 00 00 00 00 00 00 00 : ........ 0212FFD0 : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 0212FFD8 : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 0212FFE0 : 00000000 1EEB384B : 00 00 00 00 4B 38 EB 1E : ....K8.. 0212FFE8 : 00000001 1FFB91E0 : 01 00 00 00 E0 91 FB 1F : ........ 0212FFF0 : 00001499 00000000 : 99 14 00 00 00 00 00 00 : ........ ______________________________________________________________________ Memory addressed by ECX (000202C2) for 256 bytes ______________________________________________________________________ --addr-- -----dwords------ ---------bytes--------- -chars-- 000202C2 : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 000203BA : 31 lines not printed duplicate the line above ______________________________________________________________________ Memory addressed by EDX (1D3A90BC) for 256 bytes ______________________________________________________________________ --addr-- -----dwords------ ---------bytes--------- -chars-- 1D3A90BC : 0001000C 6D660001 : 0C 00 01 00 01 00 66 6D : ......fm 1D3A90C4 : 00000000 1EE973E0 : 00 00 00 00 E0 73 E9 1E : .....s.. 1D3A90CC : 1D3A01DC 06000044 : DC 01 3A 1D 44 00 00 06 : ..:.D... 1D3A90D4 : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 1D3A90DC : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 1D3A90E4 : 00000002 000200C2 : 02 00 00 00 C2 00 02 00 : ........ 1D3A90EC : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 1D3A90F4 : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 1D3A90FC : 1EEE3060 0001000D : 60 30 EE 1E 0D 00 01 00 : `0...... 1D3A9104 : 6D660001 00000000 : 01 00 66 6D 00 00 00 00 : ..fm.... 1D3A910C : 1EE973E0 1D3A01DC : E0 73 E9 1E DC 01 3A 1D : .s....:. 1D3A9114 : 06000044 00000000 : 44 00 00 06 00 00 00 00 : D....... 1D3A911C : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 1D3A9124 : 00000000 FFFFFFFF : 00 00 00 00 FF FF FF FF : ........ 1D3A912C : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 1D3A9134 : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 1D3A913C : 00000000 1EEE3060 : 00 00 00 00 60 30 EE 1E : ....`0.. 1D3A9144 : 00010018 6D660001 : 18 00 01 00 01 00 66 6D : ......fm 1D3A914C : 00000000 1EEEA892 : 00 00 00 00 92 A8 EE 1E : ........ 1D3A9154 : 1D3A01DC 00000000 : DC 01 3A 1D 00 00 00 00 : ..:..... 1D3A915C : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ 1D3A918C : 6 lines not printed duplicate the line above 1D3A9194 : 00000000 1D3A01DC : 00 00 00 00 DC 01 3A 1D : ......:. 1D3A919C : 00000000 00000000 : 00 00 00 00 00 00 00 00 : ........ ______________________________________________________________________ DLLs accessible from this process ______________________________________________________________________ DOSCALLS 08/12/2017 09:35:27 870,880 C:\OS2KRNL DISTORM 0eb60000 0000a274 11/12/2012 16:43:02 57,491 D:\UNIXROOT\USR\LIB\DISTORM.DLL ______________________________________________________________________ End of Exception Report - report took 5 ms to generate ______________________________________________________________________
While it would be better if kLIBC returned a error rather than trapping, you are calling fsetpos incorrectly. The prototype is
int fsetpos(FILE , const fpos_t );
Oh, indeed! Thank you.
Describe the bug The fsetpos() function call causes a crash.
To Reproduce Compiling a simple example:
The result of executing the compiled code
Contents of the .TRP file