#0 0x0000000000000000 in ?? () #1 0x000056098d3afbd5 in cleanup_and_exit (exit_code=exit_code@entry=1) at ../../src/roff/troff/div.cpp:562 557: 558: void cleanup_and_exit(int exit_code) 559: { 560: if (the_output) { 561: the_output->trailer(topdiv->get_page_length()); 562: delete the_output; 563: } 564: FLUSH_INPUT_PIPE(STDIN_FILENO); 565: exit(exit_code); 566: } 567: #2 0x000056098d3befb1 in do_error (type=type@entry=FATAL, format=format@entry=0x56098d3fe3a5 "error writing output file", arg1=..., arg2=..., arg3=...) at ../../src/roff/troff/input.cpp:8616 8611: } 8612: errprint(format, arg1, arg2, arg3); 8613: fputc('\n', stderr); 8614: fflush(stderr); 8615: if (type == FATAL) 8616: cleanup_and_exit(1); 8617: } 8618: 8619: int warning(warning_type t, 8620: const char *format, 8621: const errarg &arg1, #3 0x000056098d3c676a in fatal (format=format@entry=0x56098d3fe3a5 "error writing output file", arg1=..., arg2=..., arg3=...) at ../../src/roff/troff/input.cpp:8660 8655: void fatal(const char *format, 8656: const errarg &arg1, 8657: const errarg &arg2, 8658: const errarg &arg3) 8659: { 8660: do_error(FATAL, format, arg1, arg2, arg3); 8661: } 8662: 8663: void fatal_with_file_and_line(const char *filename, int lineno, 8664: const char *format, 8665: const errarg &arg1, #4 0x000056098d3e3c88 in real_output_file::~real_output_file (this=0x56098e967920, __in_chrg=) at ../../src/roff/troff/node.cpp:1662 1657: if (!fp) 1658: return; 1659: // To avoid looping, set fp to 0 before calling fatal(). 1660: if (ferror(fp) || fflush(fp) < 0) { 1661: fp = 0; 1662: fatal("error writing output file"); 1663: } 1664: #ifndef POPEN_MISSING 1665: if (piped) { 1666: int result = pclose(fp); 1667: fp = 0; #5 0x000056098d3e40fa in troff_output_file::~troff_output_file (this=0x56098e967920, __in_chrg=) at ../../src/roff/troff/node.cpp:1575 1570: void troff_output_file::really_transparent_char(unsigned char c) 1571: { 1572: put(c); 1573: } 1574: 1575: troff_output_file::~troff_output_file() 1576: { 1577: a_delete font_position; 1578: } 1579: 1580: void troff_output_file::trailer(vunits page_length) #6 troff_output_file::~troff_output_file (this=0x56098e967920, __in_chrg=) at ../../src/roff/troff/node.cpp:1578 1573: } 1574: 1575: troff_output_file::~troff_output_file() 1576: { 1577: a_delete font_position; 1578: } 1579: 1580: void troff_output_file::trailer(vunits page_length) 1581: { 1582: flush_tbuf(); 1583: if (page_length > V0) { #7 0x000056098d3afbd5 in cleanup_and_exit (exit_code=exit_code@entry=1) at ../../src/roff/troff/div.cpp:562 557: 558: void cleanup_and_exit(int exit_code) 559: { 560: if (the_output) { 561: the_output->trailer(topdiv->get_page_length()); 562: delete the_output; 563: } 564: FLUSH_INPUT_PIPE(STDIN_FILENO); 565: exit(exit_code); 566: } 567: #8 0x000056098d3befb1 in do_error (type=type@entry=FATAL, format=format@entry=0x56098d3fe3a5 "error writing output file", arg1=..., arg2=..., arg3=...) at ../../src/roff/troff/input.cpp:8616 8611: } 8612: errprint(format, arg1, arg2, arg3); 8613: fputc('\n', stderr); 8614: fflush(stderr); 8615: if (type == FATAL) 8616: cleanup_and_exit(1); 8617: } 8618: 8619: int warning(warning_type t, 8620: const char *format, 8621: const errarg &arg1, #9 0x000056098d3c676a in fatal (format=format@entry=0x56098d3fe3a5 "error writing output file", arg1=..., arg2=..., arg3=...) at ../../src/roff/troff/input.cpp:8660 8655: void fatal(const char *format, 8656: const errarg &arg1, 8657: const errarg &arg2, 8658: const errarg &arg3) 8659: { 8660: do_error(FATAL, format, arg1, arg2, arg3); 8661: } 8662: 8663: void fatal_with_file_and_line(const char *filename, int lineno, 8664: const char *format, 8665: const errarg &arg1, #10 0x000056098d3e2719 in real_output_file::flush (this=0x56098e967920) at ../../src/roff/troff/node.cpp:1692 1687: } 1688: 1689: void real_output_file::flush() 1690: { 1691: if (fflush(fp) < 0) 1692: fatal("error writing output file"); 1693: } 1694: 1695: int real_output_file::is_printing() 1696: { 1697: return printing; #11 real_output_file::flush (this=0x56098e967920) at ../../src/roff/troff/node.cpp:1689 1684: fp = 0; 1685: fatal("error closing output file"); 1686: } 1687: } 1688: 1689: void real_output_file::flush() 1690: { 1691: if (fflush(fp) < 0) 1692: fatal("error writing output file"); 1693: } 1694: #12 troff_output_file::really_print_line (this=0x56098e967920, x=..., y=..., n=0x56098ea55f80, before=..., after=...) at ../../src/roff/troff/node.cpp:929 924: if ((is_on() || n->force_tprint()) 925: && (state.changed(n->state) || n->is_tag() || n->is_special)) { 926: flush_tbuf(); 927: do_motion(); 928: force_motion = 1; 929: flush(); 930: state.flush(fp, n->state, tag_list); 931: tag_list = string(""); 932: flush(); 933: } 934: n->tprint(this); #13 0x000056098d3dbc11 in real_output_file::print_line (this=, x=..., y=..., n=0x56098e967bf0, before=..., after=..., width=...) at ../../src/roff/troff/node.cpp:1724 1719: 1720: void real_output_file::print_line(hunits x, vunits y, node *n, 1721: vunits before, vunits after, hunits width) 1722: { 1723: if (printing) 1724: really_print_line(x, y, n, before, after, width); 1725: delete_node_list(n); 1726: } 1727: 1728: void real_output_file::really_copy_file(hunits, vunits, const char *) 1729: { #14 0x000056098d3afeb8 in top_level_diversion::output (this=0x56098e8dffe0, nd=0x56098e967bf0, retain_size=0, vs=..., post_vs=..., width=...) at ../../src/roff/troff/hvunits.h:102 97: inline vunits operator +(const vunits & x, const vunits & y) 98: { 99: vunits r; 100: r = x; 101: r.n += y.n; 102: return r; 103: } 104: 105: inline vunits operator -(const vunits & x, const vunits & y) 106: { 107: vunits r; #15 0x000056098d3b45c3 in environment::output_line (this=this@entry=0x56098e91f640, n=, width=..., was_centered=0) at ../../src/roff/troff/env.cpp:1847 1842: nn = new hmotion_node(x, get_fill_color(), nn); 1843: } 1844: width += w; 1845: ++next_line_number; 1846: } 1847: output(nn, !fill, vertical_spacing, total_post_vertical_spacing(), width, 1848: was_centered); 1849: } 1850: 1851: void environment::start_line() 1852: { #16 0x000056098d3bb42d in environment::do_break (this=0x56098e91f640, do_spread=0) at ../../src/roff/troff/env.cpp:2392 2387: break; 2388: } 2389: } 2390: node *tem = line; 2391: line = 0; 2392: output_line(tem, width_total, was_centered); 2393: hyphen_line_count = 0; 2394: } 2395: prev_line_interrupted = 0; 2396: #ifdef WIDOW_CONTROL 2397: mark_last_line(); #17 0x000056098d3bbc8e in do_break_request (spread=0) at ../../src/roff/troff/env.cpp:2416 2411: void do_break_request(int spread) 2412: { 2413: while (!tok.newline() && !tok.eof()) 2414: tok.next(); 2415: if (break_flag) 2416: curenv->do_break(spread); 2417: tok.next(); 2418: } 2419: 2420: void break_request() 2421: { #18 break_request () at ../../src/roff/troff/env.cpp:2422 2417: tok.next(); 2418: } 2419: 2420: void break_request() 2421: { 2422: do_break_request(0); 2423: } 2424: 2425: void break_spread_request() 2426: { 2427: do_break_request(1); #19 0x000056098d3d42ac in process_input_stack () at ../../src/roff/troff/input.cpp:2846 2841: } 2842: #endif 2843: if (nm.is_null()) 2844: skip_line(); 2845: else { 2846: interpolate_macro(nm); 2847: #if defined(DEBUGGING) 2848: if (debug_state) { 2849: fprintf(stderr, "finished interpreting [%s] and environment state is\n", nm.contents()); 2850: curenv->dump_troff_state(); 2851: } #20 0x000056098d3ad0b8 in main (argc=6, argv=0x7fff0a2d7138) at ../../src/roff/troff/input.cpp:8058 8053: if (!no_rc) 8054: process_startup_file(FINAL_STARTUP_FILE); 8055: for (i = optind; i < argc; i++) 8056: process_input_file(argv[i]); 8057: if (optind >= argc || iflag) 8058: process_input_file("-"); 8059: exit_troff(); 8060: return 0; // not reached 8061: } 8062: 8063: void warn_request()