(Note: Windows_Vista_Product_Guide.xps is freely downloadable Microsoft brochure.)
gxps-9.06-win32.exe" -dNOPAUSE -dBATCH -r400 -sDEVICE=png16m Windows_Vista_Product_Guide.xps
The call stack that I got by building your source code in Visual Studio and reproducing the crash there was
> gxps.exe!cmsGetColorSpace(void * hProfile) Line 859 + 0x3 bytes C
gxps.exe!gscms_get_link(void * lcms_srchandle, void * lcms_deshandle, gsicc_rendering_param_s * rendering_params) Line 326 + 0x9 bytes C
gxps.exe!gsicc_get_link_profile(const gs_imager_state_s * pis, gx_device_s * dev, cmm_profile_s * gs_input_profile, cmm_profile_s * gs_output_profile, gsicc_rendering_param_s * rendering_params, gs_memory_s * memory, int devicegraytok) Line 794 + 0x11 bytes C
gxps.exe!gsicc_get_link(const gs_imager_state_s * pis, gx_device_s * dev_in, const gs_color_space_s * pcs_in, gs_color_space_s * output_colorspace, gsicc_rendering_param_s * rendering_params, gs_memory_s * memory) Line 538 + 0x21 bytes C
gxps.exe!gs_image_class_0_interpolate(gx_image_enum_s * penum) Line 359 + 0x2d bytes C
gxps.exe!gx_image_enum_begin(gx_device_s * dev, const gs_imager_state_s * pis, const gs_matrix_s * pmat, const gs_image_common_s * pic, const gx_device_color_s * pdcolor, const gx_clip_path_s * pcpath, gs_memory_s * mem, gx_image_enum_s * penum) Line 834 + 0x13 bytes C
gxps.exe!gx_begin_image1(gx_device_s * dev, const gs_imager_state_s * pis, const gs_matrix_s * pmat, const gs_image_common_s * pic, const gs_int_rect_s * prect, const gx_device_color_s * pdcolor, const gx_clip_path_s * pcpath, gs_memory_s * mem, gx_image_enum_common_s * * pinfo) Line 95 + 0x25 bytes C
gxps.exe!gx_default_begin_typed_image(gx_device_s * dev, const gs_imager_state_s * pis, const gs_matrix_s * pmat, const gs_image_common_s * pic, const gs_int_rect_s * prect, const gx_device_color_s * pdcolor, const gx_clip_path_s * pcpath, gs_memory_s * memory, gx_image_enum_common_s * * pinfo) Line 1032 + 0x2e bytes C
gxps.exe!gx_default_begin_image(gx_device_s * dev, const gs_imager_state_s * pis, const gs_image1_s * pim, int format, const gs_int_rect_s * prect, const gx_device_color_s * pdcolor, const gx_clip_path_s * pcpath, gs_memory_s * memory, gx_image_enum_common_s * * pinfo) Line 998 + 0x2d bytes C
gxps.exe!gx_default_begin_typed_image(gx_device_s * dev, const gs_imager_state_s * pis, const gs_matrix_s * pmat, const gs_image_common_s * pic, const gs_int_rect_s * prect, const gx_device_color_s * pdcolor, const gx_clip_path_s * pcpath, gs_memory_s * memory, gx_image_enum_common_s * * pinfo) Line 1025 + 0x35 bytes C
gxps.exe!clist_playback_band(int playback_action, gx_device_clist_reader_s * cdev, stream_s * s, gx_device_s * target, int x0, int y0, gs_memory_s * mem) Line 1368 + 0x42 bytes C
gxps.exe!clist_playback_file_bands(int action, gx_device_clist_reader_s * crdev, gx_band_page_info_s * page_info, gx_device_s * target, int band_first, int band_last, int x0, int y0) Line 854 + 0x27 bytes C
gxps.exe!clist_render_rectangle(gx_device_clist_s * cldev, const gs_int_rect_s * prect, gx_device_s * bdev, const gx_render_plane_s * render_plane, int clear) Line 787 + 0x3c bytes C
gxps.exe!clist_rasterize_lines(gx_device_s * dev, int y, int line_count, gx_device_s * bdev, const gx_render_plane_s * render_plane, int * pmy) Line 696 + 0x17 bytes C
gxps.exe!clist_get_bits_rectangle(gx_device_s * dev, const gs_int_rect_s * prect, gs_get_bits_params_s * params, gs_int_rect_s * * unread) Line 586 + 0x1d bytes C
gxps.exe!clist_get_bits_rect_mt(gx_device_s * dev, const gs_int_rect_s * prect, gs_get_bits_params_s * params, gs_int_rect_s * * unread) Line 544 + 0x15 bytes C
gxps.exe!gx_default_get_bits(gx_device_s * dev, int y, unsigned char * data, unsigned char * * actual_data) Line 55 + 0x1c bytes C
gxps.exe!gx_downscaler_getbits(gx_downscaler_s * ds, unsigned char * out_data, int row) Line 1435 + 0x1d bytes C
gxps.exe!gx_downscaler_copy_scan_lines(gx_downscaler_s * ds, int y, unsigned char * str, unsigned int size) Line 1558 + 0x14 bytes C
gxps.exe!do_png_print_page(gx_device_png_s * pdev, _iobuf * file, int monod) Line 658 + 0x1b bytes C
gxps.exe!png_print_page(gx_device_printer_s * pdev, _iobuf * file) Line 684 + 0xf bytes C
gxps.exe!gx_default_print_page_copies(gx_device_printer_s * pdev, _iobuf * prn_stream, int num_copies) Line 875 + 0x13 bytes C
gxps.exe!gdev_prn_output_page(gx_device_s * pdev, int num_copies, int flush) Line 812 + 0x1d bytes C
gxps.exe!gs_output_page(gs_state_s * pgs, int num_copies, int flush) Line 152 + 0x17 bytes C
gxps.exe!xps_show_page(xps_context_s * ctx, int num_copies, int flush) Line 537 + 0x14 bytes C
gxps.exe!xps_parse_fixed_page(xps_context_s * ctx, xps_part_s * part) Line 256 + 0xd bytes C
gxps.exe!xps_read_and_process_page_part(xps_context_s * ctx, char * name) Line 452 + 0xd bytes C
gxps.exe!xps_process_file(xps_context_s * ctx, char * filename) Line 560 + 0xf bytes C
gxps.exe!xps_imp_process_file(pl_interp_instance_s * pinstance, char * filename) Line 297 + 0xd bytes C
gxps.exe!pl_process_file(pl_interp_instance_s * instance, char * filename) Line 147 + 0x14 bytes C
gxps.exe!pl_main_aux(int argc, char * * argv, void * disp) Line 422 + 0x13 bytes C
gxps.exe!main(int argc, char * * argv) Line 419 + 0x15 bytes C
gxps.exe!__tmainCRTStartup() Line 278 + 0x19 bytes C
gxps.exe!mainCRTStartup() Line 189 C
kernel32.dll!7641339a()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!772c9ef2()
ntdll.dll!772c9ec5()